objective-c – 如何检测UIViewController是否有后退按钮

我有一个扩展UIViewController功能的类别,它将自己的副标题添加标题栏.它需要知道标题栏中存在哪些按钮,以便它可以调整其中的标签.我可以检测是否存在leftBarButtonItem和rightBarButtonItem,但是当涉及到一个backBarButtonItem时,我尝试过的所有内容都告诉我没有后退按钮,实际上当视图加载时有一个.这是我以前测试过的:

if(self.parentViewController.navigationItem.backBarButtonItem == nil){
    NSLog(@"no back button");
}
else {
    NSLog(@"has back button");
}

if(self.parentViewController.navigationController.navigationItem.backBarButtonItem == nil){
    NSLog(@"1no back button");
}
else {
    NSLog(@"1has back button");
}

if(self.navigationItem.backBarButtonItem == nil){
    NSLog(@"2no back button");
}
else {
    NSLog(@"2has back button");
}

if(self.navigationController.navigationItem.backBarButtonItem == nil){
    NSLog(@"3no back button");
}
else {
    NSLog(@"3has back button");
}

if(self.presentingViewController.navigationItem.backBarButtonItem == nil){
    NSLog(@"4no back button");
}
else {
    NSLog(@"4has back button");
}

if(self.presentingViewController.navigationController.navigationItem.backBarButtonItem == nil){
    NSLog(@"5no back button");
}
else {
    NSLog(@"5has back button");
}

if(self.presentedViewController.navigationItem.backBarButtonItem == nil){
    NSLog(@"6no back button");
}
else {
    NSLog(@"6has back button");
}

if(self.presentedViewController.navigationController.navigationItem.backBarButtonItem == nil){
    NSLog(@"7no back button");
}
else {
    NSLog(@"7has back button");
}

我已经尝试将它放在viewDidLoad,viewWillAppear和viewDidAppear中,它们都返回没有后退按钮.在上一个视图中,我使用self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@“Back”样式手动设置后退按钮:UIBarButtonItemStyleBordered target:nil action:nil]; (后退按钮必须说回而不是之前的视图标题).从逻辑上讲,这意味着self.parentViewController应该告诉我这个视图上是否有后退按钮,但显然不是.

解决方法

如果当前情况为真并且您希望返回按钮说“返回”,则可以遍历查看该按钮的子视图.

BOOL exists = NO;
for (UIView *view in [self.view subviews]) {
    if ([view isMemberOfClass [UIButton class]]) {
        if([view.title isEqualToString: @"Back"]){
                exists = YES;
        }
    }
}
if(!exists){
     //Add back button
}

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...