iphone - 将导航栏转换为标签栏应用程序

标签 iphone interface-builder uinavigationcontroller uitabbarcontroller

我想知道如何将 NavigationController 风格的应用程序转换为 TabBarcontroller 风格的应用程序。我将我的主窗口更改为不再包含导航 Controller (而是包含 tabbarcontroller),并且我的委托(delegate)也相应地更改,但是当我启动应用程序时,某些东西仍然认为我想要一个导航 Controller :

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key 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

我的委托(delegate)的界面如下:

@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;

我的委托(delegate)的实现:

@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];
}

在哪里可以指定应用程序是选项卡控制的应用程序,而不是导航栏控制的应用程序?

提前致谢,

最佳答案

您需要更改您的主 XIB。在 Interface Builder 中打开它,删除当前拥有的导航 Controller ,并将其替换为选项卡栏 Controller 。然后将应用程序委托(delegate)的 tabBarController 导出链接到 XIB 中的选项卡栏 Controller 。有关如何执行所有这些操作的更多信息,请参阅 Interface Builder User Guide更具体地说,Connections and Bindings部分。

关于iphone - 将导航栏转换为标签栏应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2802800/

相关文章:

iphone - 我可以信任 DragonFireSDK 吗?

iphone - 不使用 UIImage 添加复杂的动画

iphone - UIPickerView 没有 IB?

iphone - 使用 Storyboard进行景观设计

iphone - 如何从 UIView 中删除识别器

cocoa - 如何在 Cocoa/IB 中实现类似于 Mail/iTunes/Finder/etc 的侧边栏?

iphone - UINavigationBar 自定义后退按钮与形状

ios - UIViewController 和 UINavigationController 之间的区别?

ios - UINavigationController工具栏100%透明

xcode - Interface Builder 文件中的未知类。 Xcode 6 和 swift