【发布时间】: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