如何在没有导航控制器的情况下以编程方式展开5个controllerView?

时间:2015-04-23 03:30:22

标签: ios objective-c swift

我有5个视图,但没有导航控制器绑定它们。我不能使用popToRootViewControllerAnimated,因为我没有导航控制器。我该怎么做回到故事板的初始视图控制器,以及在解雇完成后可用的回调方法?

3 个答案:

答案 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];