第二个屏幕中的标签栏控制器[重复]

Posted

技术标签:

【中文标题】第二个屏幕中的标签栏控制器[重复]【英文标题】:Tab Bar Controller in the second screen [duplicate] 【发布时间】:2012-12-09 09:21:29 【问题描述】:

可能重复:UIAlertView crashes when added to app

我是 Objective-C 和 Xcode 的新手。在我的应用程序中,第一个屏幕是一个视图控制器和一个按钮。我想在按下该按钮时显示标签栏,因此标签栏将成为第二个屏幕。

这是我想要做的:

appdelegate.h

@property (strong, nonatomic) FirstViewController *viewController1;

appdelegate.m

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions    
     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
     self.viewController1 = [[FirstViewController alloc]
     initWithNibName:@"FirstViewController" bundle:nil];
     self.window.rootViewController = self.viewController1;
     [self.window makeKeyAndVisible];
     return YES; 

在我的FirsViewController.m 中有按钮点击事件:

 -(IBAction) showMainView:(id) sender  
     ViewController *mainViewController = [[ViewController alloc] initWithNibName:@"ViewController"
                                                                           bundle:nil];
     [self.view addSubview:mainViewController.view];
     mainViewController = [[ViewController alloc] initWithNibName:@"ViewController"                          
                                                           bundle:nil];
     [self.view addSubview:mainViewController.view];

ViewController 是一个带有标签栏的 xib。

在 IB 的第二个 xib 文件中,我选择 UIApplication 类作为“文件的所有者”和 AppDelegate - appdelegate 类。然后我将文件的所有者加入了应用程序委托。

当我运行我的应用并单击第一个视图上的按钮时,应用崩溃并出现以下错误: Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<ViewController 0x744f0f0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key delegate.'

您能告诉我如何克服这个问题吗?可能是在单击按钮后我应该将 tabbarController 重新分配为rootViewController? 谢谢。

【问题讨论】:

您是否创建了两次mainViewController?你的代码看起来像这样。 【参考方案1】:

错误消息看起来像,您在 xib 中设置了一些名为 delegate 的东西,它没有正确连接到类文件(ViewController)。检查您的 xib 是否显示一些警告消息并将其删除或修复该问题。

【讨论】:

我的项目中根本没有任何警告。如果我删除文件所有者(UIApplication)和 AppDelegate 之间的链接,我的应用程序会崩溃并出现另一个异常:“[UIViewController _loadViewFromNibNamed:bundle:] 加载了“ViewController”笔尖,但未设置视图出口。'” @BIB,所以您的 xib 中没有任何名为 delegate 的东西未在 viewcontroller 类中定义?

以上是关于第二个屏幕中的标签栏控制器[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在第二个标签栏项目中不显示搜索控制器的键盘

将第二个故事板控制器分配给第一个故事板标签栏项目。

从标签栏控制器跳回导航控制器 - swift 4

标签栏控制器/ Segue问题

ios标签栏点击显示模态视图黑屏

如何将UITabBar嵌入故事板xcode中的另一个UITabBar