首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UIViewController不保留其以编程方式创建的UISearchDisplayController

在这个问答内容中,我们讨论了UIViewController和UISearchDisplayController。UIViewController是iOS应用程序中的一个核心组件,它负责管理视图和控制器之间的交互。UISearchDisplayController是一个用于显示搜索结果的控制器,它可以与UISearchBar组件一起使用,以便在应用程序中实现搜索功能。

在某些情况下,开发人员可能会遇到UIViewController不保留其以编程方式创建的UISearchDisplayController的问题。这可能是因为UISearchDisplayController在UIViewController中没有被正确地保存。为了解决这个问题,开发人员可以采取以下步骤:

  1. 确保UISearchDisplayController在UIViewController中被正确地初始化和保存。可以使用以下代码来实现:
代码语言:swift
复制
class MyViewController: UIViewController {
    var searchDisplayController: UISearchDisplayController?

    override func viewDidLoad() {
        super.viewDidLoad()

        let searchBar = UISearchBar()
        searchDisplayController = UISearchDisplayController(searchBar: searchBar, contentsController: self)
        searchDisplayController?.delegate = self
        searchDisplayController?.searchResultsDataSource = self
        searchDisplayController?.searchResultsDelegate = self
    }
}

extension MyViewController: UISearchDisplayDelegate, UISearchResultsDataSource, UISearchResultsDelegate {
    // Implement the required methods here
}
  1. 确保UISearchDisplayController的视图已经添加到UIViewController的视图层次结构中。可以使用以下代码来实现:
代码语言:swift
复制
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    if let searchDisplayController = searchDisplayController {
        view.addSubview(searchDisplayController.view)
    }
}

通过以上步骤,开发人员可以确保UIViewController正确地保存和显示其以编程方式创建的UISearchDisplayController。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Cocoa编程中视图控制器与视图类详解

进度与活动: UIActivityIndicatorView UIProgressView  控制器类 UIViewController类       UIViewController负责创建管理视图及在低内存时候将它们从内存中移除...描述了导航栏上显示内容,而正好UIViewController另有一导航项属性navigationItem包括左栏按钮(leftBarButtonItem)、右栏按钮(rightBarButtonItem...选项卡类方便之处就是不需要象导航栏那样方式推入和弹出视图操作,而是组建一系列控制器(它们各自可以是UIViewController、UINavigationController、UITableViewController...1.作用: •创建和管理视图。 •管理视图上显示数据。 •设备方向变化,调整视图大小适应屏幕。 •负责视图和模型之间数据及请示传递。 2....控制器加载视图过程 当调用视图控制器view属性时,视图控制器会先调用loadView方法加载视图,因此,可以在loadView方法中创建所有的视图,这是比较好编程惯例。

5K50

实践-小细节 Ⅰ

---- 1.UISearchBar  &  UISearchDisplayController;   @interface  UISearchDisplayController :NSObject   ...使用UISearchBar & UISearchDisplayController时就会有那个点击搜索框后,试图上移效果,若是不使用UISearchDisplayController单单使用UISearchBar...NSDate *selected = [self.datePicker date]; // 创建一个日期格式器 NSDateFormatter *dateFormatter = [[NSDateFormatter...对于像NSArray这样类型,nil或NULL不能做为加到其中Object,如果定义了一个NSArray,为分配了内存,又想设置其中内容为空,则可以用[NSNULL null返回对对象来初始化...是一个全局单例,注销的话机会造成 crash  调用方法是里: object : 被观察对象 observer: 观察对象 forKeyPath里面带上propertyname,如UIView

1.6K20

IOS6学习笔记(三)

这意味着像下面这样声明使用ARC编译后指向是空值(nil):   NSObject *myObject1,*myObjects2;   不过要注意是,与其他高级编程语言不同,ARC不会自动将标量值设置为零...这意味着以下几行代码声明变量值并不等于零:   int a;   int b; 2.Objective-C命名约定   如果你在Person对象中写了一个叫做newPersonName方法,ARC...newPersonName方法可以像下面这样标注,告诉ARC编译器:尽管该方法名称前面是new,返回却是未保留对象指针。   ...而有了ARC,我们便无法再这么做了,至少指定一个所有权转移修饰符时确实如此。   ...当要从Objective-C方法(它创建一个Core Fundation对象并在之后使用CFRelease方法将其释放)返回一个保留指针时,我们可以使用这个修饰符。

67690

iOS开发之表视图爱上CoreData

*整个数据存储在一个数组中  *数组中每一个元素是一个自动,字典key是sectionHeader值,value是该section中数组形式存数据  *section中每一行对应着一个数组元素...和AppDelegate.m中进行相应配置,并且同时还自动生成一个本应用名命名Data Model文件,我们可以在Data Model文件中添加我们数据模型, 添加好数据模型我们会在生成数据实体类时使用...(3)通过创建数据实体模型来创建我们实体类(和JavaBean类似的东西)创建过程如下图,点击下一步以后,选中创建实体模型即可: ?...section, fetchedResultsController中sections方法可以数组形式返回所有的section     //sections数组中存是每个section数据信息...UISearchDisplayController自己有一个TableView用于显示查询出来结果,需要在通讯录中添加一些代码我们Seach Bar就可以使用了。

2.1K80

iOS 面向协议方式封装空白页功能

而Swift除了可以面向对象编程,它还可以面向协议编程。那可不可以也用协议来解决情况呢?...嘿嘿,这个可以有,那我们接下来就来试试怎么通过协议方式来避免上述情况,并且实现一行代码添加空白页功能 前言 如果对面向协议有疑问同学可以看下我之前两篇文章 iOS - Swift 面向协议编程...但是,这样直接写死方式很不好,有时候一些场景是需要我们做出定制,那怎么实现定制呢?协议又不能有自己变量来存放我们定制。...可以使用Cocoapods方式来安装使用 pod 'LXFProtocolTool' 我也将 iOS - Swift 面向协议编程(二) 中提及通过协议便捷加载xib功能也集成了进来。...' 创建这个库目的是为了通过协议方式来方便快捷地实现一些实用功能,目前功能不多,不过往后会逐渐增加,或许你有什么想实现功能也可以提出来,喜欢就给个Star鼓励下我吧 ?

1.4K50

iOS页面加载时间测试初探

前言 页面加载时间指页面从创建到可见时间。严格意义上来说页面加载时间测试,更应该是页面的冷加载,包含接口返回数据时间。...页面加载时间能反映代码中,创建页面视图是否有过度绘制或者绘制不合理导致创建视图时间过长情况。 UIViewController是什么?...页面开始创建点 - (void)viewDidLoad { [super viewDidLoad]; //继承了UIViewControllerviewDidLoad方法 self.statusBarStyle...简单来说,AOP(Aspect Oriented Programming)是面向切面编程,主要功能是:日志记录,性能统计、安全控制、事务处理、异常处理等等。 什么是hook?...对我而言有两点思考. 1、专项测试测出来数据结果,其实并不是记录一个数值而已,更需求了解背后技术特性。

1.7K30

iOS - Swift 面向协议编程(一)

OC无法做到面向协议开发,而Swift可以,因为Swift可以做到协议方法具体实现,而OC不行 面向对象开发 传统面向对象开发思维方式是将类中实现相似方法抽取出来,接着放入一个Base类,然后继承于...文件Eatable.swift,区分LXFProtocol.swift Eatable.swift中代码实现如下: import Foundation protocol Eatable {...至此,我们就可以通过面向协议方式给类定制不同功能,也就是模块化。...可以发现Swift面向协议编程跟c++多继承很相似 约束 现在这个Eatable协议是可以被�任意遵守,如果我们�有这么个需求,我们创建协议只是被UIViewController遵守,那我们该怎么做呢...} } Demo 接下来一个实际应用来巩固下吧 iOS - Swift 面向协议编程(二)

62250

ARKit和CoreLocation:第一部分

它固定在一个特定位置,并且大部分将保留在那里。 ARConfiguration ?...运行会话配置时,ARKit会根据设备位置和方向创建场景坐标系; ARAnchor您创建任何对象或AR会话检测到对象都是相对于该坐标系定位。 ?...让我们构建我们第一个增强现实体验!为此,我们将在相机前放置1米蓝色球。 定义 SCNSphere:一个球体定义一个表面,每个点与其中心等距离,该中心位于局部坐标空间原点。...向量,矩阵和线性代数,哦! ? 一个二乘四矩阵 如果你还记得回到数学课,那么矢量有一个幅度和方向。...虽然这与它们用于位置节点方式不同,但它们足够接近,您可以开始考虑实际应用原则。为此,使用SceneKit创建一个新ARKit项目。当你运行它时,屏幕前应该有一个漂浮在你面前屏幕截图。

2.2K20

iOS透明导航栏平滑过渡(进阶版)引实现过程结

引 如我在传送门:iOS导航栏切换界面时隐藏和显示中所说,现在很多App个人中心模块都是不保留导航栏,会直接使导航栏透明,比如做很好QQ个人信息界面: 为什么说QQ做很好呢?...设置导航栏背景透明度 导航栏上应该是有很多view,我们要做是只让背景透明,而保留标题、返回按钮。iOS没有直接给我们提供对于导航栏背景view访问途径,那么我们只能自己来找了。...我们可以给 UINavigationController 创建一个类别,来给这个类添加一个方法,用于设置导航栏透明度: // UIViewController+Cloudox.m - (void)setNeedsNavigationBackground...有它在岂不是前功尽弃了,再用上面的方法已经不管用了,这条线不在我们找出来子view之中,通过查资料,要隐藏这跟细线方法很多,但是要跟我们对导航栏背景设置冲突,又要能到只在将导航栏背景设为透明时才隐藏...,我们创建一个 UIViewController Category,为增加一个属性——导航栏透明度(navBarBgAlpha),Category一般是不可以添加属性,但我们可以通过Runtime

2.9K40

iOS数据埋点统计方案(附Demo): 运行时Method Swizzling机制与AOP编程(面向切面编程)

场景需求 统计UIViewController加载次数 统计UIButton点击次数 统计自定义方法执行 统计UITableViewCell点击事件 工程说明,首页Test1ViewController...例如下面的分类,即使你import,只要存在于工程就会影响。...为VC设计分类:AOP编程方案 ? 场景需求:该方案适用特点同上第二节。 Aspects 是iOS平台一个轻量级面向切面编程(AOP)框架,只包括两个方法:一个类方法,一个实例方法。...,挂钩方式为三种: typedef NS_OPTIONS(NSUInteger, AspectOptions) { AspectPositionAfter = 0,...为全局AppDelegate设计分类:AOP编程方案 场景需求:需要监听不同类,不同按钮,系统方法,及表单元点击事件 方案特点:是可代码配置需要监听清单字典,并且需要注入统计代码块block

83410

【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

, 但是编译该文件; -- 修改配置 : 点击项目名称, 选择 General 面板, 然后删除 Main Interface 中 Main 选项; (2) 创建 xib 界面设计 文件 创建 xib...File's Owner; -- First Responder 文件 : 代表正在与用户交互对象, 即获取到焦点对象, 代表控件会变化, 用户点击按钮时, 按钮就成为了代表控件; Objects...: 虽然 UIApplication 代表了整个应用, 但是编程直接操作 UIApplication, 开发者一般与 delegate 委托对象交互; -- 全局变量 : UIApplication..., 需要回调方法; -- viewDidLayoutSubviews 方法 : 视图已经排列好子视图后, 回调方法; UIViewController 代码示例 :  -- 头文件 :  // /...3 打开身份检查器, 由身份检查器上可以看到 Custom Class 属性为 UIView, 因此该界面的根控件时 UIView; -- 创建自定义类 : 选择菜单中 File -> New

4.8K30

View Controller编程指南

您可以继承UIViewController(或子类之一)并添加实现应用程序行为所需自定义代码。...在你UIViewController子类中,你负责管理你明确创建任何对象。 当可用空闲内存不足时,UIKit会要求应用程序释放不再需要资源。...容器型ViewController将一个或多个子ViewController内容与可选自定义View混合在一起,创建最终界面。...容器型ViewController通常作为root ViewController安装在窗口中(如图所示),但它们也可以模态方式呈现,或者作为其他容器子项安装。容器负责适当地定位子视图。...如果您在两个对象之间创建关系,请记住ViewController应该只缓存文档中信息提高效率。 实际数据仍然属于文档对象。

1.2K20

iOS14开发-UIViewController

() xib 这种方式本质是 xib 创建 UIView,然后让这个 UIView 成为 UIViewController 默认 View。...创建 UIViewController 时候勾选了Also create XIB file,可以直接通过下面两种方式初始化: // 方式一 let vc = UIViewController() /.../ 方式二 let vc = UIViewController(nibName: "xib名字", bundle: nil) 如果 UIViewController 与 xib 分别创建,直接使用上面的两种方式会报错...UINavigationBar和UINavigationItem关系 UINavigationBar是 UINavigationController 属性,属性设置会影响内部所有的 UIViewController...颜色问题 UITabBar颜色 可以通过 UITabBar barTintColor设置。 渲染颜色 图片一般由设计师统一设计,需要设置标题文字颜色适应图片。

2.3K20

iOS 无侵入埋点组件总结

结合AOP核心思想:将应用程序中业务逻辑同对提供支持通用服务进行分离,最后采用了第2种方案。...在此引入 AOP 编程,AOP(Aspect-Oriented-Programming) 即面向切面编程思想,基于 Runtime Method Swizzling 能力,来 hook 相应方法...而对于业务数据,数据是有持有者, 例如我们 Controller 一个属性值, 或者数据在 Model 某一个层级。就可以通过 KVC 方式来递归获取该属性值来取到业务数据。...对于手势,我们在创建时候进行 hook,方法为 initWithTarget:action:。 3.3.3 实现原理 用运行时方法替换方法实现无侵入埋点方法。 实现原理图: ?...,实现实时更新埋点配置。

2.8K31

iOS对UIViewController生命周期和属性方法解析

在面向对象语言中,是对象,就一定要有生命周期,UIViewController例外,生命周期管理Controller作用范围和时间,也管理其内对象作用范围和时间。...,再次创建这个类对象,initalize方法将不会被调用,对于这个类子类,如果实现了initialize方法,在这个子类第一次创建对象时会调用自己initalize方法,之后不会调用,如果没有实现...ViewConroller,我们一般有两种方式创建,一种是用纯代码方式,一种是与StoryBoard关联,在UIViewController中,有许多方法方便我们与StoryBoard进行交互联系。... sender:(nullable id)sender NS_AVAILABLE_IOS(5_0); 下面三个属性我们可以获取controllernib文件名,storyBoard和Bundle:...1、parentViewController         UIViewController里面封装了一个数组,可以存放子ViewController,系统中使用例子就是导航和tabBar这类控制器

2.8K20

用这些 iOS 技巧让你 APP 性能更佳

有时,由于内存不足,操作系统可能需要在应用程序处于后台时从内存中删除应用程序,如果不保留状态,应用程序可能会丢失对最后一个UI状态跟踪,可能会导致用户丢失正在进行操作!...当用户强制退出你应用程序时,状态数据将被删除,你当然希望这种方式丢失模型数据。 要测试状态保存和恢复是否正常,请按照以下步骤操作: 使用Xcode构建和启动应用程序。...红色表示视图不是不透明,并且显示是在其后面混合图层。绿色表示视图不透明且未进行混合。 ? 尽可能为 UILabel 指定非透明背景颜色减少颜色混合图层。...如果在主线程上运行繁重任务,那么 UIKit 需要等到繁重任务完成以后才能处理用户交互。 ? 这是主线程处理 UI 任务方式以及在执行繁重任务时导致 UI 挂起原因。...在 Apple 主线程检查器 文章中提及: 「在主线程以外线程上更新 UI 是一种常见错误,这可能导致 UI 更新,视觉缺陷,数据损坏以及崩溃。」

3.2K30
领券