隐藏viewDidLoad中没有动画的后退按钮

时间:2017-04-20 06:56:13

标签: ios swift uinavigationbar uinavigationitem

我正在navigationItem.setHidesBackButton(true, animated:false)使用viewDidLoad隐藏我的iOS10应用中的后退按钮delegate。当我这样做时,在导航栏上,在显示动画而不是完全显示后,短暂显示后退按钮标签(它正在淡出),在屏幕更改后,按钮消失。

我怎样才能防止它发生?

1 个答案:

答案 0 :(得分:1)

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

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

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

更安全的选项在prepareForSegue中,因为viewWillDisappear只要控制器A进入OFF-SCREEN就会被调用。但是在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;
     }
  }

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

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