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,一切都很好。

相关问题