0

我有一個iPhone應用程序,它具有一個根視圖,並帶有一個按鈕,該按鈕可導致標籤欄視圖。當你在根視圖中點擊UIbutton時,它會觸發一個執行下面代碼的IBAction方法。從某種原因,它崩潰到最後。有任何想法嗎?會很高興得到任何幫助...謝謝!uitabbarcontroller在啓動時崩潰

rootview.h

@interface RootView : UIViewController 

@property (strong, nonatomic) UIWindow *window; 

@property (strong, nonatomic) UITabBarController *tabBarController; 

@end 

rootview.m

-(IBAction)GoToTabBarView:(id)sender { 

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
UIViewController *viewController1 = [[FirstView alloc] initWithNibName:@"FirstView" bundle:nil]; 
UIViewController *viewController2 = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil]; 
self.tabBarController = [[UITabBarController alloc] init]; 
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil]; 
self.window.rootViewController = self.tabBarController; 
[self.window makeKeyAndVisible]; 


} 

應用崩潰的位置:

self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil]; 

我在做什麼錯?謝謝!!

崩潰日誌:

2011-07-20 11:45:37.359 MyTabProject[17929:207] <FirstView: 0x6836070> <SecondView: 0x683c770> 
2011-07-20 11:45:37.410 MyTabProject[17929:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "FirstView" nib but the view outlet was not set.' 
*** First throw call stack: 
(0xf8c600 0x112452e 0xf31f59 0xf31ec9 0xdbe80 0xdc35d 0xdc57f 0xf6ec5 0xf6d13 0xf5438 0xf5264 0xf4f11 0xf42c6 0x4c93 0xf8dd78 0x1acc5 0x1ac5a 0xbfbd4 0xc009d 0xbee8c 0x3ff13 0x4022d 0x26990 0x1a1a7 0x136b886 0xf5bd11 0xebdc9b 0xebc4b1 0xebb93c 0xebb868 0x1369fef 0x136a0b4 0x180c4 0x2a99 0x2a05) 
terminate called throwing an exception(gdb) 
+0

是否有崩潰記錄?嘗試使用NSLog(@「%@%@」,viewController1,viewController2);' –

+0

記錄要添加到數組中的值是否爲'nil',否則它們不是零。日誌: – TommyG

+0

似乎是'NIB'中的錯誤。你有沒有檢查他們的「視圖」屬性?錯誤明確提到。 –

回答

1

很難,而無需任何錯誤信息的話。但你有沒有試過

NSMutableArray *listOfViewControllers = [[NSMutableArray alloc] init]; 
UIViewController *vc; 

vc = [[FirstView alloc] initWithNibName:@"FirstView" bundle:nil]; 
[listOfViewControllers addObject:vc]; 
[vc release]; 
vc = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil]; 
[listOfViewControllers addObject:vc]; 
[vc release]; 

[self.tabBarController.viewControllers setViewControllers:listOfViewControllers]; 

另外,你確定你的筆尖存在嗎?您應該使用該軟件包:

[[FirstView alloc] initWithNibName:@"FirstView" bundle:NSBundle.mainBundle]; 
+0

+1查看上面更新的日誌。您建議的修復程序沒有幫助,但是謝謝:) – TommyG

+0

因此,您必須連接界面構建器中的視圖。您可以通過按住Ctrl鍵並單擊文件所有者來完成此操作,然後將視圖拖到FirstView –