我想要做的是为我的UINavigationController的UINavigationBar添加一个自定义视图,但仅限于当前可见的视图控制器.
因此,我通过获取引用来构建我想要在容器视图中添加的视图的子视图,并将此视图添加到导航栏:
let navBar = navigationController?.navigationBar as UINavigationBar!
结果如下:
但是,当我在UINavigationController堆栈中推送另一个视图控制器时,此子视图仍然存在于推送的viewControllers的UINavigationBar中:
解决方法
发生这种情况有几个原因:
>将子视图添加到UINavigationBar并不完全不受支持,但可能会导致奇怪的行为.
> UINavigationController中的所有视图控制器共享相同的UINavigationBar(这就是新推送的视图控制器对子视图没有任何影响的原因).
如果你想正确地做到这一点,这里有两个可能的解决方案:
>当理想的视图控制器可见时,使用viewWillAppear和viewWilldisappear添加/显示和删除/隐藏子视图.
>使用UINavigationItem的titleView属性来分配此视图,例如:
// Example code in Obj-C,sorry! myViewController.navigationItem.titleView = [[MySearchView alloc] init];
这样,搜索视图对于该视图控制器是唯一的.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。