NKo*_*kov 1 uinavigationcontroller ios
在iOS项目中,我需要检查当前是否显示后退按钮.我已经尝试过在SO上提供的一些解决方案,但它们都没有为我工作.目前我正在使用此代码
NSArray *stack = navigationController.viewControllers;
int i = stack.count-2;
if (i>=0)
{
UIViewController *backVC = (UIViewController*)[stack objectAtIndex:i];
if (backVC.navigationItem.backBarButtonItem != nil) {
NSLog(@"Back button is displayed!");
}
}
Run Code Online (Sandbox Code Playgroud)
但是日志中没有任何内容.如果我正确理解苹果指南,我正在寻找位于堆栈索引n-2的ViewController,ViewController应该保持一个后退按钮.
我在-navigationController中使用此代码:willShowViewController:animated:
小智 9
我今天遇到了同样的问题,在尝试上述代码的变化后,我决定检测是否应该使用以下方式显示后退按钮:
self.navigationController.navigationBar.backItem
Run Code Online (Sandbox Code Playgroud)
来自文档:
如果最顶层导航项的leftBarButtonItem属性为nil,则导航栏将显示一个后退按钮,其标题派生自此属性中的项.如果导航栏的堆栈中只有一个项目,则此属性的值为nil ..
这符合我的需求.希望它有所帮助,如果不是我有兴趣听听你如何解决它!
这是更可靠并且可能是正确的方法
斯威夫特:
guard let navigationStack = navigationController?.viewControllers, navigationStack.count > 1 else {
// The back button is not present
return
}
// The back button is present
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1893 次 |
| 最近记录: |