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

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
}

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

相关推荐