【问题标题】:Perform segue with no back button?执行没有后退按钮的segue?
【发布时间】:2012-07-07 23:41:39
【问题描述】:

有没有办法从隐藏在导航控制器深处的视图控制器中执行转场,而不是在调用转场时阻止“后退”按钮出现?这样做的理由是,在深入了解产品之后,我们宁愿用户不能回头搞砸。

【问题讨论】:

    标签: objective-c ios xcode ios5


    【解决方案1】:

    我个人更喜欢在源 UIViewController 而不是目标 UIViewController 中设置隐藏后退按钮。这允许您延迟每个 segue 以启用或禁用后退导航。在viewDidLoad 中,您将无法看到用于实例化 UIViewController 的 segue。

    因此使用prepare for segue:

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"segueToHideBackButtonIdentifier"]){
        [segue.destinationViewController.navigationItem setHidesBackButton:YES];
    }
    

    【讨论】:

      【解决方案2】:

      您必须将 segue 执行为“显示详细信息”而不仅仅是“显示”,新视图将替换当前视图

      【讨论】:

      • 如果使用 Show Detail,NavController 的标题将不会显示。如果需要,可以将 NavBar 添加到“显示”的 ViewController
      【解决方案3】:

      在您的-(void)viewWillAppear:(BOOL)animated 中,您可以致电[self.navigationItem setHidesBackButton:YES animated:NO];

      【讨论】:

      • 该视图控制器可以有一个属性来切换是否应该调用该行,只需在您的 prepareForSegue 中设置它。
      【解决方案4】:

      在应该隐藏后退按钮的视图上,您​​所要做的就是在viewDidLoad 中添加这一行。

      self.navigationItem.hidesBackButton = YES;
      

      【讨论】:

      • 隐藏后退按钮,但现在添加了另一个具有特定名称的按钮?
      • @Darkenor 那么你必须在某处实例化一个新的 leftBarButtonItem,检查并确保你没有在任何地方调用 leftItemsSupplementBackButton。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多