1

我的问题可能有点愚蠢,但是为什么在 IB 中实例化的任何对象都不能处理,比如按钮单击?我的意思是我可以将自己的对象添加到 xib,并将出口链接到控制和控制操作到对象的方法,但是一旦我按下按钮,一切都会崩溃(未知选择器)。

你们对此有什么暗示吗?

编辑:代码,按要求:

@interface TextController {
    IBOutlet UILabel * textLabel;
    IBOutlet UITextField * textField;
}

-(IBAction)buttonClicked:(id)sender;

@end

@implementation TextController

-(IBAction)buttonClicked:(id)sender {
    textLabel.text = @"Ololo";
}

@end

IB中的连接没问题,相信我。所有这些拖放的东西真的很难让他们误会:)

编辑 2: TextController 不是文件所有者(在这种情况下它工作正常)。但是,我只是想了解为什么我不能将动作连接到某个对象(甚至可能不是 UIViewController 的子类)。

4

2 回答 2

2

您可以将插座和动作连接到 nib 文件中的任何对象。NSObject在 Interface Builder 中,将库调色板的表单拖到您的 nib 文件中。然后转到信息面板的 Identity 选项卡并设置对象的 Class。

这样,您可以从您的 nib 实例化任何类的任何对象。如果要挂钩的目标是从 nib 文件静态创建的。确保文件的所有者至少有一个对您的对象的引用,否则它将在创建后立即被释放。发送方不保留目标。

如果您要连接的对象不应从您的 nib 静态创建,则awakeFromNib在从 nib 文件实例化的类中实现并在代码中连接目标。

最后一个选项是如果您在 nib 文件中根本没有您自己的任何子类。然后initWithNibName:bundle:在您的UIViewController子类中实现,并在调用超级实现后将您的目标连接到代码中。

于 2009-09-28T13:00:10.797 回答
0

邮政编码,这通常意味着您没有正确连接您的连接。文件的所有者 TextController 在 IB 中吗?

于 2009-09-27T21:16:22.210 回答