加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 07:02:37 所属栏目:百科 来源:网络整理
导读:我有一个扩展UIViewController功能的类别,它将自己的副标题添加到标题栏.它需要知道标题栏中存在哪些按钮,以便它可以调整其中的标签.我可以检测是否存在leftBarButtonItem和rightBarButtonItem,但是当涉及到一个backBarButtonItem时,我尝试过的所有内容都告
我有一个扩展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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读