【问题标题】:How to remove itself and superview from super superview?如何从超级超级视图中删除自身和超级视图?
【发布时间】:2011-11-30 00:25:21
【问题描述】:

我有一个UIViewController 课程ABA 加载 B 使用:[A.view addSubView B.view]

B 有一个带有后退按钮的导航栏。当我点击它时,我想回到A,所以在选择器中我尝试了[self.view removeFromSuperview],但它只删除了导航栏。然后我尝试了[self.view.superview removeFromSuperview],它仍然只是删除了导航栏。我该怎么办?

另外,返回按钮的另一个小问题:设置它的标题。这两种方法我都试过了,还是显示“返回”。

navItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Chapter" style:UIBarButtonItemStylePlain target:self action:@selector(handleBackBarButtonItem:)];

navItem.backBarButtonItem.title = @"Chapter";

提前谢谢你!

【问题讨论】:

    标签: ios uiviewcontroller uinavigationbar


    【解决方案1】:

    我认为您不太了解导航(使用UINavigationController)在 iOS 中的工作原理。假设你想要动画,这就是你想要的:

    1. 设置UINavigationController。这可以在应用程序的委托中完成(为避免内存泄漏,请在 UINavigationController *navController 上设置一个实例变量:

      navController = [[UINavigationController alloc] initWithRootViewController:A];
      

      请注意,我们正在添加 A 作为我们的根视图控制器。

    2. 在需要时推送第二个视图控制器。我假设您在单击按钮或其他内容后添加B.view。在添加第二个视图控制器的方法的实现中,运行以下代码,而不是[A.view addSubview:B.view]。这个方法应该在第一个控制器的 .m 文件中:

      [self.navigationController pushViewController:B animated:YES];
      

      这也会产生很好的过渡效果。

    3. 从堆栈中弹出第二个视图控制器。使用UINavigationController,一个漂亮的箭头形后退按钮会自动包含在推送的视图控制器中,以导航回最后一个视图控制器。这意味着您甚至不需要任何代码来允许向后导航。

    就是这样!现在如果您需要更改B 的返回按钮的标题,请在AviewDidLoad 方法中执行此操作:

    self.navigationItem.backBarButtonItem = customBackButtonItem;
    

    【讨论】:

    • 事实上我没有使用 UINavigationController。相反,B 有一个带有 Back 和 Next 按钮的 UINavigationBar,因为我需要为这两个按钮进行一些自定义工作。看起来 UINavigationController 是要走的路。我会试一试!谢谢aopsfan,我很感激。
    • 我已经准备好在backButtonTitle 之前提供 +1 - 这不是 UINavigationItem 的财产。
    • @jrturton 我更新了它。看起来 Apple 删除了 backButtonTitle 属性,将其替换为 backBarButtonItem
    【解决方案2】:

    您可以获取一组子视图,然后删除您想要删除的子视图。这篇SO 帖子将向您展示如何使用 subviews 数组删除所有子视图或多个子视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多