在没有动画的情况下隐藏 viewDidLoad 中的后退按钮

Hiding back button in viewDidLoad without animation

我在 viewDidLoad 的 iOS10 应用程序中使用 navigationItem.setHidesBackButton(true, animated:false) 隐藏后退按钮。当我这样做时,在导航栏上,后退按钮标签会在呈现动画时短暂显示(淡出)而不是根本不显示,在屏幕切换后,按钮消失了。

我怎样才能防止它发生?

假设您要从控制器 A 转到控制器 B。 当前您正在控制器 B 的 viewDidLoad 中应用 self.navigationItem.hidesBackButton = true

在控制器 A viewWillDisappearprepareForSegue 中从 A 推送到 B 时添加此完全相同的代码(如果您使用的是 segue)

-(void)viewWillDisappear:(BOOL)animated{
     self.navigationItem.hidesBackButton = true;
}

prepareForSegue 中有一个更安全的选项,因为只要控制器 A 离开屏幕,就会调用 viewWillDisappear。但是在 prepareForSegue 中,您可以通过以下

检查以下代码是否仅在从控制器 A 转到控制器 B 时才有效

假设从控制器 A 连接到控制器 B 的 segue 名为 "SEGUE_NAME"

 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if([[segue identifier]isEqualToString:@"SEGUE_NAME"]){
       /*
        this means it is going from Controller A to Controller B
        via segue "SEGUE_NAME"
      */
      self.navigationItem.hidesBackButton = YES;
     }
  }

我认为这将是 swift 版本:如果语法不合适,请原谅我

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if(segue.identifier == "SEGUE_NAME"){
        self.navigationItem.hidesBackButton = true;
    }
 }