所以我在我的应用程序中有一个UITabBarController作为视图,其中第一个选项卡是UINavigationController。我在这个视图中有一个按钮,可以将另一个自定义视图推送到堆栈中:
myViewController *vc = [[myViewController alloc] init];
[self pushViewController:myOtherView animated:YES];
类myViewController
包含应该在-viewDidLoad
和-viewDidAppear:(BOOL)animated
内部发生的事情,但是如果我在UITabBarController视图出现后立即按下我的按钮,那么这两种方法都不会出现被称为。甚至更奇怪的是,当我点击“Back”时,视图没有动画,而是堆栈下方的视图弹回原位。
但是,如果我转到标签栏中的另一个标签页,然后返回第一个标签页,然后再次点按我的按钮,我的自定义视图控制器会动画,-viewDidAppear:(BOOL)animated
被调用,并且它会动画显示按照“应该”的方式击中“后退”。不幸的是,永远不会调用-viewDidLoad
。
我真的试图摆脱使用Interface Builder的一切;我想纯粹以编程方式创建这个视图控制器,但这些奇怪的问题并没有帮助。有谁能想到这种奇怪行为的原因?
编辑:即使我通过IB创建我的视图控制器,仍会出现此行为。这是怎么回事?我是否需要对UITabBarController做些什么?
编辑#2:以下是我希望我的观点投注设置的方式:
答案 0 :(得分:0)
您没有说出哪种对象包含您发布的代码,但是,如果它处理按钮操作,则可能是由导航控制器管理的自定义视图控制器。如果这是真的,那么你需要[self.navigationController pushViewController:myOtherView animated:YES];
。
(如果self
是其他类型的对象或self.navigationController
为nil,那么您需要添加有关当前视图控制器结构的更多详细信息。)