无论我做什么,ParentViewController都是零

时间:2011-01-09 13:40:30

标签: iphone objective-c

我的控制器层次结构:

  • TabBaseController(UITabBarController)
    • SubclassedController

在我的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

我还想补充一点,当翻转时,此消息会显示在控制台中(警告):

使用两阶段旋转动画。要使用更平滑的单阶段动画,此应用程序必须删除两阶段方法实现。 旋转多个视图控制器或视图控制器而不是窗口代理时,不支持使用两阶段旋转动画

1 个答案:

答案 0 :(得分:1)

如果您要展示如何呈现第二个UITabBarController将会很有帮助。您是否忽略了UITabBarController类引用中的以下警告?

  

部署标签栏界面时,必须将此视图安装为窗口的根目录。与其他视图控制器不同,标签栏界面永远不应该作为另一个视图控制器的子项安装。