[英]How to remove itself and superview from super superview?
我有一个UIViewController
类A
和B
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
)如何工作。 假设您想要动画,这就是您想要的:
设置一个UINavigationController
。 这可以在应用程序的委托中完成(为避免内存泄漏,请在UINavigationController *navController
上设置实例变量:
navController = [[UINavigationController alloc] initWithRootViewController:A];
请注意,我们将A
添加为根视图控制器。
在需要时推第二个视图控制器。 我假设您在单击按钮或其他B.view
后添加B.view
。 在添加第二个视图控制器的方法的实现中,运行以下代码,而不是[A.view addSubview:B.view]
。 此方法应该在第一个控制器的.m文件中:
[self.navigationController pushViewController:B animated:YES];
这也将提供良好的过渡效果。
将第二个视图控制器弹出堆栈。 使用UINavigationController
,一个漂亮的箭头后退按钮会自动包含在推送的视图控制器中,以导航回最后一个视图控制器。 这意味着您甚至不需要任何代码即可允许向后导航。
而已! 现在,如果您需要更改B
的后退按钮的标题,请在A
的viewDidLoad
方法中执行以下操作:
self.navigationItem.backBarButtonItem = customBackButtonItem;
您可以获取一组子视图,然后删除要删除的子视图。 这篇SO文章将向您展示如何使用subviews数组删除所有子视图或多个子视图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.