Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在没有导航控制器的情况下,如何以编程方式展开5个controllerViews?_Ios_Objective C_Swift - Fatal编程技术网

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

Ios 在没有导航控制器的情况下,如何以编程方式展开5个controllerViews?,ios,objective-c,swift,Ios,Objective C,Swift,我有5个视图,但没有导航控制器绑定它们。我无法使用PoptorootViewController激活,因为我没有导航控制器。我该如何返回到故事板的初始视图控制器,以及在退出完成后有什么回调方法可用?试一试。我不确定你会遇到什么样的内存管理问题,如果有的话,可以深入5个视图,但是值得一试 var storyBoard = UIStoryboard(name: "Main", bundle: nil) var vc = storyBoard.instantiateInitialViewControl

我有5个视图,但没有导航控制器绑定它们。我无法使用PoptorootViewController激活,因为我没有导航控制器。我该如何返回到故事板的初始视图控制器,以及在退出完成后有什么回调方法可用?

试一试。我不确定你会遇到什么样的内存管理问题,如果有的话,可以深入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       
}

可以通过以下方法删除视图。 此外,如果您已将其添加为childViewController,则必须将其删除

//删除子视图

for (UIView *v in [self.view subviews])
{
    [v removeFromSuperview];
}
//删除子视图控制器

for (UIViewController * controller in [self childViewControllers])
{
    [controller removeFromParentViewController];
}

目标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];

您是否考虑过在功能上使用导航控制器,然后将其隐藏在每个视图中,以保持您喜欢的美感?是的,但我正在寻找一种更优雅、更简约的解决方案。您是否使用segues来展示每个视图控制器?如果是这样的话,只需使用一个展开段就可以了。您将每个ViewController置于彼此之上?取决于您达到5个视图深度的方式。指定plz。在topController中使用什么样的回调方法?为什么需要回调方法?当您关闭视图控制器时,它将从内存中释放,现在如果您尝试在topViewControlelr中实现回调,则应用程序将崩溃