繁体   English   中英

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

[英]How to remove itself and superview from super superview?

我有一个UIViewControllerAB A使用以下方法加载B[A.view addSubView B.view]

B有一个带有“后退”按钮的导航栏。 当我单击A时,我想回到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中的导航(使用UINavigationController )如何工作。 假设您想要动画,这就是您想要的:

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

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

    请注意,我们将A添加为根视图控制器。

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

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

    这也将提供良好的过渡效果。

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

而已! 现在,如果您需要更改B的后退按钮的标题,请在AviewDidLoad方法中执行以下操作:

self.navigationItem.backBarButtonItem = customBackButtonItem;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM