had*_*zoo 65 iphone uinavigationcontroller iphone-sdk-3.0 uisearchdisplaycontroller
每当用户开始编辑UISearchDisplayController搜索栏时,搜索控制器就会变为活动状态,并在显示搜索表视图时隐藏视图的导航栏.是否可以防止UISearchDisplayController隐藏导航栏而不重新实现它?
sti*_*igi 60
我刚刚调试了一下UISearchDisplayController并发现它在UINavigationController上调用一个私有方法来隐藏导航栏.这发生在-setActive:animated:.如果您继承UISearchDisplayController并使用以下代码覆盖此方法,则可以通过伪造将其隐藏来阻止navigationBar被隐藏.
- (void)setActive:(BOOL)visible animated:(BOOL)animated;
{
if(self.active == visible) return;
[self.searchContentsController.navigationController setNavigationBarHidden:YES animated:NO];
[super setActive:visible animated:animated];
[self.searchContentsController.navigationController setNavigationBarHidden:NO animated:NO];
if (visible) {
[self.searchBar becomeFirstResponder];
} else {
[self.searchBar resignFirstResponder];
}
}
Run Code Online (Sandbox Code Playgroud)
如果这对您有用,请告诉我.我也希望在未来的iOS版本中不会破坏...仅在iOS 4.0上测试过.
小智 52
最简单的解决方案,没有黑客攻击.
@interface MySearchDisplayController : UISearchDisplayController
@end
@implementation MySearchDisplayController
- (void)setActive:(BOOL)visible animated:(BOOL)animated
{
[super setActive: visible animated: animated];
[self.searchContentsController.navigationController setNavigationBarHidden: NO animated: NO];
}
@end
Run Code Online (Sandbox Code Playgroud)
Ren*_*ené 50
UISearchControlleriOS 8中引入的新类具有一个属性hidesNavigationBarDuringPresentation,如果要保持导航栏可见(默认情况下它仍然是隐藏的),您可以将其设置为false.
joe*_*ick 28
以上答案对我来说不太适合.我的解决方案是欺骗UISearchDisplayController认为没有UINavigationController.
在视图控制器中,添加此方法
- (UINavigationController *)navigationController {
return nil;
}
Run Code Online (Sandbox Code Playgroud)
这对我来说没有任何副作用,尽管看起来像是一个非常糟糕的主意......如果你需要进入导航控制器,请使用[super navigationController].
Pet*_*ics 10
从iOS 8.0开始,通过将UISearchController's self.searchController.hidesNavigationBarDuringPresentation属性设置为false 可以实现相同的行为.
Swift中的代码如下所示:
searchController.hidesNavigationBarDuringPresentation = false
Run Code Online (Sandbox Code Playgroud)
小智 9
尝试这种方式不同,没有子类化UISearchDisplayController.在你为UISearchDisplayController设置委托的UIViewController类中,实现searchDisplayControllerDidBeginSearch:并添加使用
[self.navigationController setNavigationBarHidden:NO animated:YES];
Run Code Online (Sandbox Code Playgroud)
对我来说诀窍,希望有所帮助.
| 归档时间: |
|
| 查看次数: |
47381 次 |
| 最近记录: |