从NIB加载View时,iPhone程序会立即退出

时间:2011-03-06 21:22:12

标签: objective-c interface-builder uibutton

有问题的应用程序是一个简单的示例程序。在我的视图控制器标题中,我按钮实例化如下:

@interface ObscurelyNamedViewController : UIViewController {
    UIButton *yoButton;
}
@property(nonatomic, retain) IBOutlet UIButton *yoButton;

- (IBAction)yoButtonPressed:(id)sender;

yoButtonPressed:实现如下:

[yoButton setTitle: @"I said 'yo', jammit!" forState: UIControlStateNormal];
// repeat for other button states
.
.
.

在Interface Builder中,我已将UIButton的Touch Up Inside事件连接到ObscurelyNamedViewController的文件所有者中的yoButtonPressed方法以识别触摸。作为回报,我已将文件所有者的插座连接回yoButton,以便更新其标题。

当我构建并运行时,我没有错误,但没有任何显示,应用程序立即退出。生活在IB中唯一的另一件事是UIImage视图。我错过了什么或者我错误地连线了什么?

编辑:在控制台中,我看到以下消息:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "BradiiCaliiViewController" nib but the view outlet was not set.'

2 个答案:

答案 0 :(得分:1)

这可能与该行动无关。你说,“没有任何东西显示,应用程序立即退出”,这意味着该动作从未发送过。

需要来自控制台的消息,但请检查

  1. 您使用的是initWithNibName吗?如果是这样,你的名字是否恰到好处?
  2. 您是否在init中使用Outlets做任何事情?你不应该 - 并在viewDidLoad中执行。
  3. 知道控制台中的消息会帮助我们给你真正的答案。

    编辑:根据您的控制台消息

    1. 双击.xib文件以转至IB
    2. 点击文件所有者
    3. 转到Connections Inspector
    4. 未设置视图插座(右?) - 将圆圈拖动到文档窗口中的视图图标。
    5. (对不起,但我没有在我面前的IB - 这是来自内存 - 如果我对确切位置的错误,请查看连接检查员的视口)

答案 1 :(得分:0)

从对Lou Franco的评论中回答:

BradiiCaliiViewController抱怨即使加载NIB后它也没有视图。您必须将文件所有者的视图插座连接到BradiiCaliiViewController的XIB中的视图。