微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – 如何确定是否显示后退按钮?

在iOS应用程序中,如何确定是否显示后退按钮?理想情况下,我想在我的控制器的loadView方法中知道这一点.

这是我在loadView,viewDidLoad和viewWillAppear中尝试过的内容

if(self.navigationItem.backBarButtonItem)

还有这个:

if(self.navigationItem.leftBarButtonItem)

这些都不起作用 – 即使屏幕上有后退按钮,它们总是为零(表达式评估为假).我最不想做的是将一个Cancel按钮设置为self.navigationItem.leftBarButtonItem,但前提是没有后退按钮.如果有后退按钮,我们不需要取消按钮.实际上,设置leftBarButtonItem会覆盖后退按钮,所以我们一直看到一个取消按钮 – 即使应该有一个后退按钮.

解决方法

你问的backBarButtonItem是错误的对象.此属性控制对象在导航堆栈中的“后退”项目时的表示方式.

因此,您需要在下面的级别询问视图控制器,它位于导航堆栈中的backBarButtonItem是什么:

int n = [self.navigationController.viewControllers count] - 2;
if (n >= 0)
    if ([(UIViewController*)[self.navigationController.viewControllers objectAtIndex:n]navigationItem].backBarButtonItem == nil)
        // Do your thing....

您可能需要在执行此代码时检查导航控制器是否已将viewController添加到堆栈,顶视图控制器可能仍然是前一个.我已经检查了viewWillAppear,此时堆栈确实包含了新的顶级控制器.

原文地址:https://www.jb51.cc/iOS/332472.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐