我有5个视图,但没有导航控制器绑定它们。我不能使用popToRootViewControllerAnimated,因为我没有导航控制器。我该怎么做回到故事板的初始视图控制器,以及在解雇完成后可用的回调方法?
答案 0 :(得分:0)
给它一个机会。我不确定您会遇到什么样的内存管理问题,如果有的话会深入了解5个视图,但值得一试。
var storyBoard = UIStoryboard(name: "Main", bundle: nil)
var vc = storyBoard.instantiateInitialViewController() as! CustomViewController
self.presentViewController(vc, animated: true) { () -> Void in
//Do something in this completion block
}
答案 1 :(得分:0)
您可以通过以下方法删除视图。 此外,如果您将它们添加为childViewController,则必须将其删除。
//删除子视图
for (UIView *v in [self.view subviews])
{
[v removeFromSuperview];
}
//删除儿童视图控制器
for (UIViewController * controller in [self childViewControllers])
{
[controller removeFromParentViewController];
}
答案 2 :(得分:0)
Objective-C实施
在AppDelegate
或任何其他Util
班级
- (void)customPopToRootViewController {
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
//If you are using this method inside AppDelegate then write self.window.rootViewController
NSMutableArray *presentedViewControllers = [NSMutableArray array];
while (topController.presentedViewController) {
[presentedViewControllers addObject:topController.presentedViewController];
topController = topController.presentedViewController;
}
for (UIViewController *vc in presentedViewController) {
[vc dismissViewControllerAnimated:YES completion:nil];
}
}
然后在当前视图控制器中调用此函数。
[(AppDelegate*)[UIApplication sharedApplication].delegate customPopTopToRootViewController];