控制台警告:Presenting view controllers on detached view
controllers is discouraged
》》登录过后present到一个tab管理的视图控制器,在这里面oneVC又addObject一个视图控制器twoVC。当从oneVC present到 twoVC的时候这个警告就出现了。并且dismiss后返回到oneVC时里面的tableView的y值发生改变。
》》分析原因是present一个视图后再present出另一个视图就会出现这样的警告
(在网上查找的资料解决方法: [self.view.window.rootViewControllerpresentViewController:controller
animated:YEScompletion:nil];)
》》
最终解决方法:
原先是通过[self.controlArray addObject:homeWork];这样添加present会出警告
再通过addChildViewController一次就不会出现警告了 [self addChildViewController:homeWork];
》》避免类似的警告
一般来说我们呈现一个viewcontroller 里面的内容,经常采用的方式是用navigationcontroller与tabbarcontroller来管理视图控制器。在这种情况下,呈现的视图控制器都在一个app维护的控制器堆栈里面。
而有一种情况就是通过self.view addsubview:AviewController.view也可以呈现出某个视图控制器。这种情况虽然看上去跟 push的结果没什么不同,但是实际上这个被呈现的view的controller并没有在当前app的视图堆栈里,也就是所谓的
detachviewcontroller,如果你在这个分离之外的视图控制器里面做present 调用,就会出现上述问题。
所以判定是否为分离视图,就是看它是不是处在当前app的控制器堆栈里面。
显然app的 rootviewcontroller 当然是处于堆栈里,并且是堆栈最底层的视图控制器。所以这种解决方案在一定程度上是可行的。
Presenting view controllers on detached view controllers is discouraged
P》》resenting view controllers on detached view controllers is discouraged