2011-01-09 85 views
5

我的控制器層次結構:ParentViewController是零,無論我做什麼

  • TabBaseController(的UITabBarController)
    • SubclassedController

在我tabbasecontroller我有一個導航欄按鈕,使用presentModalViewController方法翻轉子控制器到第二個UITabBarController。

所以我的問題是:爲什麼不

self.parentViewController 

在第二的UITabBarController工作?它是零。

我想這在第二的UITabBarController我viewDidLoad方法:

修訂

這與navigationItemButton中的UITabBarController方法呈現它

-(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

你可以檢查你的viewDidLoad被調用*之前*控制器添加到父項?如果您提前訪問視圖屬性可能會發生。 – Eiko 2011-01-09 17:46:52

+0

我懷疑這是由於這個問題,但我會嘗試。 來自Apple: 因爲UITabBarController類繼承自UIViewController類,所以標籤欄控制器具有可通過視圖屬性訪問的其自己的視圖。在部署選項卡欄界面時,必須將此視圖安裝爲窗口的根目錄。與其他視圖控制器不同,選項卡欄界面不應該被安裝爲另一個視圖控制器的子視圖。 – LuckyLuke 2011-01-09 17:50:30

回答

1

,如果你要展示你是如何呈現的是第二的UITabBarController這將是有益的。您是否可能忽略了UITabBarController類參考中的以下警告?

部署選項卡欄界面時,必須將此視圖安裝爲窗口的根目錄。與其他視圖控制器不同,選項卡欄界面不應該被安裝爲另一個視圖控制器的子視圖。

相關問題