ios - 我的导航栏有什么问题?

标签 ios objective-c uinavigationbar

我想设置当前 navigationItem.backBarItemtitle 属性,而不是相对于上一个 View 的标题。所以我使用这个方法:

self.navigationController.navigationBar.topItem.backBarButtonItem=barButtonItem;

但我发现它在某些情况下并不像我预期的那样。

在 View B 中使用 TOPITEM

enter image description here

在 View B 中使用 BACKITEM

enter image description here

我发现 self.navigationController.navigationBar.items (我认为它是一堆 UINavigationItems)似乎不正确。

在 View A 中,输入 self.navigationController.navigationBarHidden=YES;viewDidLoadviewWillAppear:也会导致不同的行为。

那么我的代码有什么问题呢?我是否应该显式访问 self.navigationItem 以强制初始化它(如果我不直接使用它)?

代码:感谢您的耐心等待

View A:

-(void)viewWillAppear:(BOOL)animated{
    self.navigationController.navigationBarHidden=YES;
}

View B:

-(void)viewWillAppear:(BOOL)animated{
    self.navigationItem.title=@"B";
    self.navigationController.navigationBarHidden=NO;
    UIBarButtonItem* buttonItem=[[UIBarButtonItem alloc]
                                 initWithTitle:@"toA"
                                 style:UIBarButtonItemStylePlain
                                 target:self
                                 action:nil];
    self.navigationController.navigationBar.topItem.backBarButtonItem=buttonItem;
}

View C:

-(void)viewWillAppear:(BOOL)animated{
    self.navigationItem.title=@"C";
    self.navigationController.navigationBarHidden=NO;
    UIBarButtonItem* buttonItem=[[UIBarButtonItem alloc]
                                 initWithTitle:@"toB"
                                 style:UIBarButtonItemStylePlain
                                 target:self
                                 action:nil];
    self.navigationController.navigationBar.topItem.backBarButtonItem=buttonItem;
}

最佳答案

如果你想设置后退按钮使用

self.navigationItem.backBarButtonItem=buttonItem;

如果你想设置后退按钮的标题使用leftbarbuttonviewwillAppear

 [self.navigationItem setHidesBackButton:YES];

 UIBarButtonItem *buttonItem=[[UIBarButtonItem alloc]
                                 initWithTitle:@"toA"
                                 style:UIBarButtonItemStylePlain
                                 target:self
                                 action:@selector(back)];
   self.navigationItem.leftBarButtonItem=buttonItem;

后退 Action

-(void)back
{    
[self.navigationController popViewControllerAnimated:YES];

}

或者你可以试试这些

viewwillappear

-(void)viewWillAppear:(BOOL)animated
{
    self.navigationController.navigationItem.hidesBackButton=YES;
    UIBarButtonItem *buttonItem=[[UIBarButtonItem alloc]
                                         initWithTitle:@"toA"
                                         style:UIBarButtonItemStylePlain
                                         target:self
                                         action:@selector(back)];
           self.navigationItem.leftBarButtonItem=buttonItem;
    }


-(void)back
        {    
        [self.navigationController popViewControllerAnimated:YES];

        }

关于ios - 我的导航栏有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40418866/

相关文章:

ios - 调用 NSURLConnection cancel 时会触发 didFailWithError 吗?

ios - Firebase 实时数据库帖子

ios - 如何知道 NSURLSessionDataTask 响应是否来自缓存?

ios - View 的颜色和导航栏的颜色

iOS:删除左侧 uibarbuttonitem 之间的间隙

ios - 如何在 swift 2 中获取 json 数据时启动和停止事件指示器?

ios - 呈现 SKStoreProductViewController 重新激活非事件约束

iphone - 如何建立二级 NSSortDescriptor 排序键?

ios - 导入 JSON 数组

ios - 使用导航栏后退按钮返回主视图