Iphone UITABBARC控制器';UINavigationController类型的第一个视图操作不完全正确

Iphone UITABBARC控制器';UINavigationController类型的第一个视图操作不完全正确,iphone,objective-c,xcode,Iphone,Objective C,Xcode,因此,我的应用程序中有一个UITabBarController作为视图,它的第一个选项卡是UINavigationController。我在这个视图中有一个按钮,它将另一个自定义视图推到堆栈上: myViewController *vc = [[myViewController alloc] init]; [self pushViewController:myOtherView animated:YES]; 类myViewController在-viewDidLoad和-viewdidisea

因此,我的应用程序中有一个UITabBarController作为视图,它的第一个选项卡是UINavigationController。我在这个视图中有一个按钮,它将另一个自定义视图推到堆栈上:

myViewController *vc = [[myViewController alloc] init];
[self pushViewController:myOtherView animated:YES];
myViewController
-viewDidLoad
-viewdidisease:(BOOL)animated
中都有应该发生的事情,但是如果我在UITabBarController视图出现后点击我的按钮,这些方法似乎都不会被调用。更奇怪的是,当我点击“Back”时,视图并没有动画化,而是堆栈中它下面的视图突然弹回到原来的位置

但是,如果我转到选项卡栏中的另一个选项卡,然后返回到第一个选项卡,然后再次点击我的按钮,我的自定义视图控制器将在中设置动画,
-viewdide:(BOOL)animated
,并在点击“back”时按应有的方式在视图外设置动画。不幸的是,
-viewDidLoad
从未被调用

我真的想摆脱使用界面生成器的一切;我想纯粹通过编程来创建这个视图控制器,但是这些奇怪的问题没有帮助。有人能想出这种奇怪行为的原因吗

编辑:即使我通过IB创建视图控制器,这种行为仍然会发生。怎么回事?我需要对UITABBARC控制器做些什么吗

编辑#2:以下是我希望如何设置我的视图:

  • 断路器
    • 表1:UINavigationController
      • 要推送到堆栈上的UIViewController
        • 要推送到堆栈上的UIViewController
        • etc(可能有更多UIViewController)
    • 表2:UIViewController
    • 表3:导航控制器
      • 要推送到堆栈上的UIViewController
        • 要推送到堆栈上的UIViewController

您不会说什么类型的对象包含您发布的代码,但如果它正在处理按钮操作,则可能是由导航控制器管理的自定义视图控制器。如果这是真的,那么您需要
[self.navigationController-pushViewController:myOtherView-animated:YES]


(如果
self
是其他类型的对象或
self.navigationController
为nil,则需要添加有关当前视图控制器结构的更多详细信息。)

对此表示抱歉。它是UINavigationController的一个子类。啊……这可能是问题的一部分。在UINavigationController文档中,“该类不用于子类化。”通常,您会创建一个标准的UINavigationController以及第一个“普通”视图控制器子类(其中包含按钮的处理程序),并将其放在选项卡中。然后,当你想要一个不同的“普通”控制器时,你会创建并推动它。哦,很有趣。所以我认为我应该在我的UINavigationController子类中做的任何事情,我真的应该在一个非子类UINavigationController的rootViewController中做,嗯?那会让你进入一个更好理解的领域。:)UINavigationController实际上只是一个工具,用于管理定制视图控制器的堆栈,并提供在它们之间移动的标准方式。好的,感谢您的见解!我甚至都不记得为什么我想在第一时间将UINavigationController子类化。。。哦,我想我想访问控制器内部的self.navigationItem,它必须扩展UINavigationController?但我想你可以通过UINavigationController的根视图来访问它,嗯?