Mic*_*rne 2 uinavigationbar uinavigationcontroller ios
我已经实现了一个搜索表单的自定义版本,其行为很像带有范围栏的UISearchBar(但实际上由于UI原因而以编程方式拼凑在一起).屏幕加载TextField,您点击TextField,导航栏在屏幕上显示动画,文本字段向上移动,并显示分段控件以过滤结果.
无论如何,这一切都有效,但当我点击其中一个搜索结果时,我的代码推送了一个新的ViewController.问题是新控制器在没有导航栏的情况下被推送(因为我[[self navigationController] setNavigationBarHidden:YES animated:YES]
在切换到搜索状态时使用).
我可以显示导航栏,因为新的ViewController被推送,甚至在转换到新的ViewController时显示动画 - 但所有这些解决方案看起来都很笨拙.我希望它像使用UISearchBar(实际上更像是电子邮件应用程序)一样工作,因为恢复的导航栏似乎只是从右侧滑入,就像它是子视图控制器的一部分一样.
我希望有一个简单的解决方案......谢谢
对于任何人来说,解决方案是让您的控制器成为委托人UINavigationController
,然后在委托方法中显示或隐藏导航栏.
您的控制器需要实现协议:
@interface MYSearchController() <UINavigationControllerDelegate>
Run Code Online (Sandbox Code Playgroud)
然后-(void)viewDidLoad
将控制器指定为委托:
[self navigationController].delegate = self;
Run Code Online (Sandbox Code Playgroud)
最后,实现这样的方法:
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if(viewController == self)
{
if(_searchState && ![self navigationController].navigationBarHidden)
{
[[self navigationController] setNavigationBarHidden:YES animated:YES];
}
}
else
{
if([self navigationController].navigationBarHidden)
{
[[self navigationController] setNavigationBarHidden:NO animated:YES];
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1870 次 |
最近记录: |