如何从超级视图中删除自己和superview?

时间:2011-11-30 00:25:22

标签: ios uiviewcontroller uinavigationbar

我有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";

提前谢谢!

2 个答案:

答案 0 :(得分:1)

我认为您不太了解导航(UINavigationController)如何在iOS中运行。假设你想要动画,这就是你想要的:

  1. 设置UINavigationController。这可以在app的委托中完成(为了避免内存泄漏,在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,一个漂亮的箭头形状的后退按钮会自动包含在推送的视图控制器中,以导航回最后一个视图控制器。这意味着您甚至不需要任何代码来允许向后导航。

  4. 就是这样!现在,如果您需要更改B后退按钮的标题,请使用A的{​​{1}}方法执行此操作:

    viewDidLoad

答案 1 :(得分:0)

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