我在使用 iOS8 时遇到一个问题。
这里我有我的视图层次结构。
窗口 ==> UITabBarController ==> 2 个选项卡
Tab 1 ==> UINavigationController1 ==> UIViewController1 作为根视图控制器
Tab 2 ==> UINavigationController2 ==> UIViewController2 作为根视图控制器
现在一切都在一个方向上完美运行。
但问题在于这个测试步骤:
- 将日志放入 ViewController 的 viewDidLoad 方法中以跟踪事件
- 启动应用程序
- FirstViewController 的 viewDidLoad 将调用。现在只停留在这个视图上。
- 旋转至横向。
- 这是神奇的部分。 SecordViewController 的 viewDidLoad 方法被调用,该方法尚未被 Tab2 激活,然后它也使用 viewDidLoad 加载。
此问题仅在 iOS8 上出现。
针对所有设备进行了测试。
我有同样的问题。我注意到在 iOS8 上,当设备的方向发生变化时viewWillTransitionToSize:withTransitionCoordinator:在 UITabBarController 上被调用,并且 UITabBarController 调用任何尚未加载的视图控制器的 viewDidLoad 方法。
现在,在我的 UITabBarController 子类中,我重写此方法以不调用 [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]。
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
//Do not call [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
NSLog(@"Device orinetation changed");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)