我想知道如何将NavigationController样式应用程序转换为TabBarcontroller样式应用程序。我改变了我的主窗口,不再包含一个导航控制器(而是一个tabbarcontroller),我的委托也适当,但是当我启动应用程序时,仍然认为我想要一个navigationController:
由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[setValue:forUndefinedKey:]:此类不是键值navigationController的键值编码兼容。'
堆栈追踪:
#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应用,而不是导航栏控制的应用?
提前致谢,
答案 0 :(得分:3)
您需要更改主XIB。在Interface Builder中打开它,删除您当前获得的导航控制器,并用标签栏控制器替换它。然后将应用程序代理的tabBarController
出口链接到XIB中的选项卡栏控制器。有关如何执行所有操作的详细信息,请参阅Interface Builder User Guide,更具体地说,请参阅Connections and Bindings部分。
答案 1 :(得分:0)
我发现-Info.plist文件在我将项目转换为iPad应用程序后引用了错误的xib文件,然后删除了导航控制器并替换了没有它的新顶级视图结构。我已经加载并编辑了非iPad xib,但忽略了使用其他xib创建的Resources-iPad文件夹。
一旦照顾到xib,一切都很好。