【问题标题】:Changing app to use a Tab Bar controller更改应用程序以使用标签栏控制器
【发布时间】:2011-05-13 07:16:34
【问题描述】:

我正在创建我的第一个 iPhone 应用程序(使用 XCode 4),我最初使用基于导航的应用程序模板创建了该项目。从那以后,我决定希望 UI 在底部有一个标签栏,在顶部有一个导航栏,但是我很难更改我的应用来做到这一点。

我向我的应用程序添加了一个新窗口,并将其命名为 TabWindow.xib。我在 Interface Builder 中打开它并添加了一个标签栏控制器。然后我将控制器的出口属性添加到 AppDelegate.h 中,如下所示:-

@property (nonatomic, retain) IBOutlet UITabBarController *tabController;

这是在 AppDelegate.m 中合成的:-

@synthesize tabController=_tabController;

然后我将 applicationDidFinishLaunchingWithOptions 中的代码更改为以下代码(用我的新视图控制器切换旧视图控制器):-

//self.window.rootViewController = self.navigationController;
self.window.rootViewController = self.tabController;

当我运行应用程序时,我看到的不是预期的 Tab Bar 视图,而是一个空窗口。我怀疑我需要(至少)连接到我在上面创建的 tabController 插座,但我不知道如何做到这一点。还有什么我需要做的才能让它工作吗?

【问题讨论】:

    标签: xcode ios


    【解决方案1】:

    您需要在界面生成器中添加与应用委托的连接。为此,请从对象库中添加一个“对象”并将其类更改为您的应用程序委托。然后在连接检查器中添加连接。

    此外,在您的应用程序信息 plist 文件中,您可能必须将“主 nib 文件基本名称”设置为新的 xib 名称。

    【讨论】:

    • 我已经按照你的建议完成了,连接了 tabController 和窗口出口,并更改了 plist 文件中的主 nib 文件基本名称,但我仍然看到一个空窗口。我确实注意到的一件事是文件所有者连接到原始 MainWindow.xib 中的 App Delegate,但不在我的新 TabWindow.xib 中,但我不知道如何设置它。如果我 ctrl+从 File's Owner 对象拖动到 App Delegate 对象,我没有机会连接到插座。
    • 从对象库中添加“对象”后,是否在“对象”上设置了类?您必须通过身份检查员执行此操作。那里的自定义类字段应该设置为您的应用程序委托类。完成后,您应该能够使用连接检查器将连接代理出口拖动到您的应用程序代理类对象。
    • 是的,我做到了。很抱歉在我之前的评论中没有提到这一点。
    • 我已经成功了。我注意到文件的所有者类设置为“NSObject”。我将其更改为“UIApplication”,并且能够使用上面提到的 ctrl+click 拖动文件所有者委托。现在,当我运行我的应用程序时,我看到了 TabWindow 的预期。感谢您为我指明正确的方向。
    • 这里的想法用完了。您能否在其身份检查器中检查您的文件所有者类是否为“UIApplication”。
    猜你喜欢
    • 1970-01-01
    • 2014-02-11
    • 2020-07-29
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多