【发布时间】:2011-01-09 13:40:30
【问题描述】:
我的控制器层次结构:
- TabBaseController (UITabBarController)
- 子类控制器
在我的 tabbasecontroller 中,我有一个导航栏按钮,它使用 presentModalViewController 方法将子类控制器翻转到第二个 UITabBarController。
所以我的问题是:为什么不
self.parentViewController
在第二个UITabBarController 中工作?是零。
我正在第二个 UITabBarController 的 viewDidLoad 方法中尝试这个:
if (self.parentViewController == nil) {
NSLog(@"Parent is nil");
}
更新
这是 UITabBarController 中的方法,带有显示它的 navigationItemButton
-(IBAction)openModalTabController:(id)sender {
if (self.nvc == nil) {
ModalTabController *vc = [[ModalTabController alloc] init];
self.nvc = vc;
[vc release];
}
[self presentModalViewController:self.nvc animated:YES];
}
这是我以模态方式呈现的控制器(UITabBarController):
标题:
@interface NewBuildingViewController : UITabBarController {
}
@end
主要:
@implementation NewBuildingViewController
- (id)init {
[super initWithNibName:nil bundle:nil];
ViewController1 *vc1 = [[ViewController1 alloc] init];
ViewController2 *vc2 = [[ViewController2 alloc] init];
ViewController3 *vc3 = [[ViewController3 alloc] init];
NSArray *controllers = [[NSArray alloc] initWithObjects:vc1, vc2, vc3, nil];
[vc1 release];
[vc2 release];
[vc3 release];
self.viewControllers = controllers;
[controllers release];
self.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
return self;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
return [self init];
}
@end
我还想补充一点,这个消息在翻转时显示在控制台(警告):
使用两阶段旋转动画。要使用更平滑的单阶段动画,此应用程序必须删除两阶段方法实现。 旋转多个视图控制器或非窗口委托的视图控制器时,不支持使用两阶段旋转动画
【问题讨论】:
-
你能检查一下你的 viewDidLoad 是否被调用 before 控制器被添加到父级吗?如果您过早访问视图属性,可能会发生这种情况。
-
我怀疑这是一个问题,但我会尝试。来自 Apple:因为 UITabBarController 类继承自 UIViewController 类,所以标签栏控制器有自己的视图,可通过 view 属性访问。部署选项卡栏界面时,您必须将此视图安装为窗口的根目录。与其他视图控制器不同,标签栏界面永远不应安装为另一个视图控制器的子级。
-
啊,这是重要的信息。是的,不要这样做。请参阅您的其他问题以获取解释。 :-)
标签: iphone objective-c