2

我想知道如何將NavigationController樣式的應用程序轉換爲TabBarcontroller樣式的應用程序。我改變了我的主窗口不包含navigationcontroller了(但不是tabbarcontroller)和我的代表也恰如其分,但是當我啓動應用程序的東西仍然認爲我想要一個navigationController:將導航欄轉換爲TabBar應用程序

終止應用程序由於未捕獲的異常「NSUnknownKeyException ',原因:'[setValue:forUndefinedKey:]:這個類不是關鍵的導航控制器編碼兼容的值。'

堆棧跟蹤:

#0 0x020fa004 in ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 
#1 0x96fc0509 in objc_exception_throw 
#2 0x020ee1c1 in -[NSException raise] 
#3 0x000d8a78 in _NSSetUsingKeyValueSetter 
#4 0x000d84c5 in -[NSObject(NSKeyValueCoding) setValue:forKey:] 
#5 0x004fb4c8 in -[UIRuntimeOutletConnection connect] 
#6 0x020af92f in -[NSArray makeObjectsPerformSelector:] 
#7 0x004f9f7f in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:] 
#8 0x004fbfcb in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:] 
#9 0x0033b0a6 in -[UIApplication _loadMainNibFile] 
#10 0x0034482a in -[UIApplication _runWithURL:sourceBundleID:] 
#11 0x00341b88 in -[UIApplication handleEvent:withNewEvent:] 
#12 0x0033d6d3 in -[UIApplication sendEvent:] 
#13 0x003440b5 in _UIApplicationHandleEvent 
#14 0x0265aed1 in PurpleEventCallback 
#15 0x02092b80 in CFRunLoopRunSpecific 
#16 0x02091c48 in CFRunLoopRunInMode 
#17 0x0033be69 in -[UIApplication _run] 
#18 0x00345003 in UIApplicationMain 
#19 0x00002ec8 in main at main.m:14 

我委託的界面如下:

@interface CPPlayerAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> { 
    UIWindow *window; 
UITabBarController *tabBarController; 
} 

#pragma mark - 
#pragma mark Window/view 
@property (retain) IBOutlet UIWindow *window; 
@property (retain) IBOutlet UITabBarController *tabBarController; 

我委託的實現:

@implementation CPPlayerAppDelegate 

@synthesize window; 
@synthesize tabBarController; 

@synthesize stateController, distribution, languageManager, updateParser, soundPlayer, ticketProcessor; 

#pragma mark - 
#pragma mark Application lifecycle 

- (void)applicationDidFinishLaunching:(UIApplication *)application { 
[window addSubview: tabBarController.view]; 
    [window makeKeyAndVisible]; 
} 

我在哪裏可以指定應用程序是一個tabbarcontrolled應用程序,而不是navigationbarcontro lled應用程序?

在此先感謝,

回答

3

您需要更改您的主要XIB。在Interface Builder中打開它,刪除當前獲得的導航控制器,然後用標籤欄控制器替換它。然後將您的應用程序代理的tabBarController插座連接到XIB中的標籤欄控制器。有關如何執行所有操作的更多信息,請參閱Interface Builder User Guide,更具體地說,請參閱Connections and Bindings部分。

0

我發現-Info.plist文件在將我的項目轉換爲iPad應用程序後引用了錯誤的xib文件,然後刪除了導航控制器並將其替換爲新的頂層視圖結構。我已經加載並編輯了非iPad的xib,但忽略了使用其他xib創建的Resources-iPad文件夾。

曾經照顧過這個xib,一切都很好。

相關問題