所以我有一个UITabBarController 作为我的应用程序中的一个视图,它的第一个选项卡是一个UINavigationController。我在这个视图中有一个按钮,可以将另一个自定义视图推送到堆栈上:
myViewController *vc = [[myViewController alloc] init];
[self pushViewController:myOtherView animated:YES];
该类myViewController
具有应该在两者内部发生的事情-viewDidLoad
,-viewDidAppear:(BOOL)animated
但是如果我在 UITabBarController 视图出现后立即点击我的按钮,那么这些方法似乎都没有被调用。甚至更奇怪的是,当我点击“返回”时,视图并没有消失,而是堆栈中它下面的视图只是弹回原位。
但是,如果我转到选项卡栏中的另一个选项卡,然后返回到第一个选项卡,然后再次点击我的按钮,我的自定义视图控制器动画进入,-viewDidAppear:(BOOL)animated
被调用,并且它在点击“返回”时动画出视图应该。不幸的是,-viewDidLoad
从未调用过。
我真的很想摆脱对所有事情都使用 Interface Builder 的做法;我想纯粹以编程方式创建这个视图控制器,但这些奇怪的问题并没有帮助。谁能想到这种奇怪行为的原因?
编辑:即使我通过 IB 创建我的视图控制器,这种行为仍然会发生。这是怎么回事?我需要对 UITabBarController 做些什么吗?
编辑#2:这是我希望我的观点设置的方式:
- UITabBar 控件
- 选项卡 1:UINavigationController
- UIViewController 被压入堆栈
- UIViewController 被压入堆栈
- 等(可能更多的 UIViewControllers)
- UIViewController 被压入堆栈
- 选项卡 2:UIViewController
- 选项卡 3:UINavigation 控制器
- UIViewController 被压入堆栈
- UIViewController 被压入堆栈
- UIViewController 被压入堆栈
- 选项卡 1:UINavigationController