【问题标题】:Problem loading a Nib from a UITabBarController从 UITabBarController 加载 Nib 时出现问题
【发布时间】:2011-07-26 11:18:56
【问题描述】:

我正在尝试从 TabBarController 加载 Nib。我通过分配 selectedIndex 来做到这一点。按索引加载的 ViewController 在 TabBarController 所在的 MainWindow.xib 中指示,分配要在每个 Tab Bar Item 中加载的 Nib 的名称。加载是可行的,但是如果我在要加载的 ViewController 中创建一个 IBOutlet 并将其链接到任何东西(IBOutlet 的对象可以是任何类),那么它会在我分配 selectedIndex 的行中崩溃。

编辑>> 我有一个应用程序委托,它包含一个链接到在 MainWindow.xib 中创建的 UITabBarController 对象的 UITabBarController。

在那个 UITabBarController 对象中,有一些标签栏项,每个项都链接到不同的 UIViewController。这些链接是通过属性 NIB Name 建立的。

我正在尝试测试将其链接到空 UIViewController 的第一个项目,在本例中我将其称为 TestViewController(创建了 TestViewController.h、TestViewController.m 和 TestViewController.xib)。我在第一个 Tab Bar Item 的 NIB Name 属性中写了 TestViewController。它有效。

现在我在 TestViewController 中放置了一个 IBOutlet UILabel。我在 TestViewController.h 中这样定义它:

#import <UIKit/UIKit.h>


@interface TestViewController : UIViewController {
    UILabel *label;
}

@property (nonatomic, retain) IBOutlet UILabel *label;

@end

然后我在 TestViewController.m 中合成标签对象。我在 TestViewController.xib 中放置了一个 UILabel。它仍然有效。

然后,我将在 TestViewController 中定义的标签对象链接到我在 NIB 文件中创建的 UILabel。我编译和测试。它不起作用。它在我将 selectedIndex 分配给应用程序委托中定义的 UITabBarController 的部分崩溃。分配是这样的:

self.tabBarController.selectedIndex = 0;

我使用 0 是因为我只使用第一个选项卡栏项进行测试。它会因 SIGABRT 信号而崩溃。

任何想法为什么会发生这种情况?

【问题讨论】:

    标签: iphone uiviewcontroller uitabbarcontroller nib


    【解决方案1】:

    修改后您的问题得到了显着改善。鉴于您告诉我们的情况,很难明确说明为什么会发生崩溃,但我可以为您指明正确的方向。

    您已经找到导致崩溃的行,这是一个好的开始。在该行上放置一个断点并调试应用程序。当您遇到断点时,请查看 self.tabBarController。是零吗?如果不是,它的 viewControllers 数组中有多少个对象?如果有一个或多个,请查看您的 TestViewController。在其 -loadView 方法或 UIViewController -loadView 上放置一个断点。即使你看不到 -[UIViewController loadView] 的源代码,你仍然可以看到它的效果:到方法结束时,视图控制器的 view 属性应该是非 nil。

    此外,在此崩溃发生后查看控制台。那里通常会显示一条错误消息,大致告诉您应用程序崩溃的原因。

    【讨论】:

    • 谢谢。我想这给了我一个提示。 viewControllers 数组没有对象。 UIViewController 没有进入 init 或 loadView。我不知道为什么会这样,只有当我将 IBOutlet 链接到 UILabel 时才会发生这种情况。
    【解决方案2】:

    问题解决了。我忘记将链接到 Tab Bar Item 的 UIViewController 更改为 TestViewController。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      相关资源
      最近更新 更多