iOS开发使用UISearchController跳转新控制器时搜索框依然出现

释放双眼,带上耳机,听听看~!

最近偶遇一个问题,当使用UISearchController来push一个新的界面时,push成功后搜索框依然存在,不知道是不是苹果的一个bug,但是可以通过增加一句代码来解决:

    self.definesPresentationContext = YES;

那么这句话什么意思呢?
definesPresentationContext这是一个布尔变量,表示该视图被覆盖时,视图或者它的子类提供了一个视图控制器。默认为NO,我们在做跳转时,需要一个跳转的环境,如果呈现的视图控制器不提供的话,需要呈现这个控制器的父视图控制器。此处因为UISearchController为呈现的视图控制器,它不提供这个跳转的环境,所以需要它的父视图控制器提供,所以设置父视图控制器的这个布尔变量为YES。
这里需要注意个问题:
普通的VC在push时虽然这个属性默认为NO,但是,是没有影响的,因为这种情况只发生在有新的视图控制器覆盖了当前控制器的情况。

Determines which parent view controller's view should
be presented over for presentations of type
view controller has this flag set, then the presente
will be the root view controller.
翻译:确定哪一个控制器应该被作为UIModalPresentationCurrentContext类型的演示图像而呈现,如
果没有父视图控制器设置了此标志,则呈现者将是当前控制器的根视图控
制器。

大意应该是,有视图控制器覆盖了根视图控制器,就手动设置根视图控制器为呈现的控制器,并作为跳转的环境。

为TA充电
共{{data.count}}人
人已赞赏
iOS文章

iOS开发加密key的SHA256和MD5加密

2021-2-2 22:24:55

iOS文章

iOS开发 用AFNetworking实现https单向验证,双向验证

2021-2-2 23:39:52

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索