Iphone UITABBARC控制器';UINavigationController类型的第一个视图操作不完全正确
因此,我的应用程序中有一个UITabBarController作为视图,它的第一个选项卡是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
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)
- 要推送到堆栈上的UIViewController
- 表2:UIViewController
- 表3:导航控制器
- 要推送到堆栈上的UIViewController
- 要推送到堆栈上的UIViewController
- 要推送到堆栈上的UIViewController
- 表1:UINavigationController
[self.navigationController-pushViewController:myOtherView-animated:YES]代码>
(如果self
是其他类型的对象或self.navigationController
为nil,则需要添加有关当前视图控制器结构的更多详细信息。)对此表示抱歉。它是UINavigationController的一个子类。啊……这可能是问题的一部分。在UINavigationController文档中,“该类不用于子类化。”通常,您会创建一个标准的UINavigationController以及第一个“普通”视图控制器子类(其中包含按钮的处理程序),并将其放在选项卡中。然后,当你想要一个不同的“普通”控制器时,你会创建并推动它。哦,很有趣。所以我认为我应该在我的UINavigationController子类中做的任何事情,我真的应该在一个非子类UINavigationController的rootViewController中做,嗯?那会让你进入一个更好理解的领域。:)UINavigationController实际上只是一个工具,用于管理定制视图控制器的堆栈,并提供在它们之间移动的标准方式。好的,感谢您的见解!我甚至都不记得为什么我想在第一时间将UINavigationController子类化。。。哦,我想我想访问控制器内部的self.navigationItem,它必须扩展UINavigationController?但我想你可以通过UINavigationController的根视图来访问它,嗯?