Ios 在没有导航控制器的情况下,如何以编程方式展开5个controllerViews?
我有5个视图,但没有导航控制器绑定它们。我无法使用PoptorootViewController激活,因为我没有导航控制器。我该如何返回到故事板的初始视图控制器,以及在退出完成后有什么回调方法可用?试一试。我不确定你会遇到什么样的内存管理问题,如果有的话,可以深入5个视图,但是值得一试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
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中实现回调,则应用程序将崩溃