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类型的演示图像而呈现,如
果没有父视图控制器设置了此标志,则呈现者将是当前控制器的根视图控
制器。

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodingFire

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值