【问题标题】:steps to add tabbarcontroller to AppDelegate using Interface Builder in XCode 4.2 Empty Application template在 XCode 4.2 Empty Application 模板中使用 Interface Builder 将 tabbarcontroller 添加到 AppDelegate 的步骤
【发布时间】:2023-04-04 09:49:01
【问题描述】:

当我被困at this question 时,我找不到将 UITabBarController 添加到 AppDelegate 的正确步骤(不是以编程方式),但是通过使用“空应用程序”模板的界面构建器,我尝试添加一个新的空 xib 文件,然后将 uitabbarcontroller 放入其中,但无法将其(从 IB)链接到 AppDelegate !即当我将蓝线从 tabbarcontroller 对象(在文档大纲中)移动到 File's Owner 时,界面构建器仅在显示的列表中显示“Delegate”选项,因此那里没有 IBOutlet 选项。

那么,添加 tabbarcontroller 并使用界面构建器方式将其连接到 appDelegate 的具体步骤是什么(对于 Empty Application 模板,使用 XCode 4.2 和 IOS 5 SDK)?

step1:新建 Empty Application 模板项目。

...等待后续步骤...

非常感谢。

【问题讨论】:

  • 你为什么不用 Xcode TabBarController 模板?
  • 因为我需要在项目中添加CoreData支持

标签: iphone objective-c ios xcode ios5


【解决方案1】:

第 1 步:创建新的 Empty Application 模板项目。
第二步:添加

@property (nonatomic, strong) IBOutlet UITabBarController *tabBarController;
@property (nonatomic, strong) IBOutlet UIWindow *window;

在您的应用委托中。 (不要忘记合成这些) 第 3 步:在您的应用委托中更改此行:

@interface AppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate>

第四步:修改此方法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self.window addSubview:[self.tabBarController view]];
[self.window makeKeyAndVisible];
return YES;
}  

第 5 步:创建一个新的空 xib。将一个标签栏控制器以及一个空对象拖到它上面。
将空对象的类设置为 AppDelegate。将文件所有者设置为 UIApplication。

第 6 步:将“delegate”属性从您的文件所有者拖到您的 appdelegate 类,然后将标签栏出口从您的 appdelegate 类拖到您的 tabbarcontroller

第 7 步:添加一个窗口并将“窗口”连接从您的 appdelegate 拖到该窗口。

第 8 步:不要忘记进入项目设置并将 main-base nib 文件设置为您创建的新 xib。

就是这样。希望我没有错过任何东西。

【讨论】:

  • 感谢这些详细的步骤,但是,我完全按照您的步骤操作,但是当我运行应用程序时,只有一个白色的空窗口,没有别的,我猜是IB连接有问题!
  • 我将rootViewController属性从window对象拖到tabBarController,而不是写:[self.window addSubView: [self.tabBarController.view]];我写道: self.window.rootViewController = self.tabBarController;它起作用了,标签栏已显示但有一个小问题:仅选择了第一个标签,我无法选择其他标签(就像它们被禁用一样),我应该怎么做才能启用其他标签?这是一个奇怪的情况
  • 最后,它对我有用 :) 我遵循了本教程:linkedin.com/…,它看起来与 SEG 的答案非常相似,它救了我。非常感谢赛格。
【解决方案2】:

我不明白通过主窗口添加 UITabBarController 有什么需要。在 Xcode 4.2 中,Apple 对默认模板进行了一些更改。它没有在空应用程序中提供 MainWindow.xib。这就是为什么,如果你打开 AppDelegate.h,你会看到:

@property (strong, nonatomic) UIWindow *window;

它没有我们在以前的 Xcode 版本中看到的窗口的 IBOutlet。 您想要实现的是具有核心数据支持的 UITabBarController。您可以以编程方式添加 tabBarController,并且仍然添加 CoreData 支持。

【讨论】:

  • 我想不以编程方式添加 tabbarcontroller,以获得界面构建器的好处,以便稍后更改这些选项卡,而不是挖掘代码
【解决方案3】:

这是我必须做的。

从实用工具面板中情节提要的对象列表(控制器和对象)中,将通用“对象”(黄色立方体)拖到标签栏控制器场景页面(我将对象放在“退出”对象下)。

将对象的类设置为您的 appDelegate。现在您应该能够将您的标签栏控制器的委托链接到您的 appDelegate 对象。如果您创建了诸如

之类的属性,您还可以将 appDelegate 链接到选项卡栏控制器
@property (weak, nonatomic, readwrite) IBOutlet UITabBarController *tabs

【讨论】:

  • 这很好用。出于某种原因,它不会让我投票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
  • 2012-02-25
  • 2012-02-05
  • 2015-04-14
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
相关资源
最近更新 更多