我最近做了一些項目重組,現在我沒有看到我的標籤欄控制器,但它的第一個視圖控制器的視圖正在出現。以下是在發生問題之前發生的所有事情的細目。我的UITabBarController沒有出現,但它的第一個視圖是?
應用程序委託使用nib加載FirstViewController。 FirstViewController從我的服務器加載應用程序數據,然後用模態轉換呈現MainViewController。 MainViewController是UITabBarController應該出現的位置。這是一個非常簡單的課程。
的.H
@interface MainViewController : UIViewController <UITabBarControllerDelegate> {
IBOutlet UITabBarController *tabBarController;
}
@property (nonatomic, retain) UITabBarController *tabBarController;
@end
的.M
@implementation MainViewController
@synthesize tabBarController;
- (void)viewDidLoad {
NSLog(@"MainViewController viewDidLoad");
//set tab bar controller delegate to self
tabBarController.delegate = self;
// home view
HomeViewController *home = [[HomeViewController alloc] initWithTab];
// menu view
MenuViewController *menu = [[MenuViewController alloc] initWithTab];
// special offers view
SpecialOffersViewController *so = [[SpecialOffersViewController alloc] initWithTab];
// events view
EventsViewController *events = [[EventsViewController alloc] initWithTab];
// info view
InfoViewController *info = [[InfoViewController alloc] initWithTab];
//populate the tab bar controller with view controllers
NSArray *controllers = [NSArray arrayWithObjects:home, menu, so, events, info, nil];
tabBarController.viewControllers = controllers;
//release view controllers
[home release];
[menu release];
[so release];
[events release];
[info release];
[controllers release];
//add tab bar controller to view
[self.view addSubview:tabBarController.view];
[super viewDidLoad];
}
,這裏是從FirstViewController位是模態呈現MainViewController ...
MainViewController *controller = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
[controller release];
我沒有變任何編譯器錯誤或警告和應用程序運行膨脹...沒有崩潰。它只是沒有顯示出惡夢的TabBar,並且它在我在AppDelegate上創建它時習慣了。我檢查了我的NIB中的所有內容,並且我的網點似乎已經連接好了。我不知道發生了什麼事。幫幫我!
好一點,但是這並沒有解決它。實際上最終做的工作是在我將控制器的視圖設置爲tabBarController的視圖之前添加這個。 的CGRect幀= CGRectMake(self.view.frame.origin.x, \t \t \t \t \t \t \t self.view.frame.origin.y, \t \t \t \t \t \t \t self.view.frame.size .width, \t \t \t \t \t \t \t self.view.frame.size.height); tabBarController.view.frame = frame; 我從谷歌搜索撿起來。我不應該這樣做,但它是有效的。 – 2010-03-12 03:02:30
實際上,[NSArray arrayWithObjects]生成一個保留計數爲1的對象,它將在未來的某個地方發佈。它不能返回保留計數= 0的對象,因爲這意味着它將被釋放。 – 2011-02-18 21:21:21
@Andrei的權利。 '+ 0'是一個表示自動釋放對象的慣例。 ('+ 0'!='0') – 2011-02-18 21:33:16