【问题标题】:What happens to unused views in UINavigation controller?UINavigationcontroller 中未使用的视图会发生什么?
【发布时间】:2011-01-28 05:13:57
【问题描述】:

我正在 iOS 中实现购物车。

我正在使用 UINavigationController 来为流程的每个步骤显示 UIViewController。用户可以使用后退按钮进行更改。

但在他们提交订单后,我不希望他们返回。使用导航控制器显示没有后退按钮的视图的正确方法是什么?

当你这样做时,之前的 UIViewController 会发生什么?他们被释放了吗?显然我不需要它们。我必须手动解除分配吗?

【问题讨论】:

    标签: iphone objective-c ios uinavigationcontroller


    【解决方案1】:

    您必须解除分配这些视图控制器。否则,它们将开始泄漏。我想,你会以某种方式推动视图控制器,类似于以下内容。

    MyViewController *myViewController = [[MyViewController alloc] init];
    [self.navigationController pushViewController:myViewController animated:YES];
    [myViewController release];
    

    如果你这样做了,以后你就不用担心那些视图控制器了。 UINavigationController 完成后会释放它们。

    隐藏后退按钮:在最后一个视图控制器的loadView 方法中添加以下行。

    [self.navigationItem setHidesBackButton:YES];
    

    【讨论】:

    • 是的,我正在以这种方式推送视图如何在没有后退按钮的情况下加载最后一个视图?
    • loadView方法中你的最后一个视图控制器,设置[self.navigationItem setHidesBackButton:YES]
    • @Simon - 一点。 iOS 没有垃圾收集。当您将视图传递给所述 UINavigationController 时,UINavigationController 会保留该视图。这是引用计数,而不是垃圾收集。否则,很好的答案。
    • @Moshe:是的..你对垃圾收集的看法是正确的..我错了..谢谢伙计..
    【解决方案2】:

    您可以通过以下方式告诉它转到特定的视图控制器:

    [myNavController popToRootViewControllerAnimated:YES];
    

    或者,还有一个 UINavigationController 方法给它一个视图控制器数组,它应该呈现第一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-25
      • 2012-08-29
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 2013-09-08
      • 2019-03-29
      • 1970-01-01
      相关资源
      最近更新 更多