处理动作的任意对象?

时间:2009-09-27 21:09:48

标签: iphone objective-c xcode xib

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

你们有暗示吗?

编辑:代码,请求:

@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的子类)。

2 个答案:

答案 0 :(得分:2)

您可以将出口和操作连接到nib文件中的任何对象。在Interface Builder中将NSObject形式的库调色板拖到nib文件中。然后转到信息面板的“标识”选项卡并设置对象的类。

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

如果要挂钩的对象不应该从您的nib静态创建,那么在从nib-file实例化的类中实现awakeFromNib并在代码中挂接目标。

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

答案 1 :(得分:0)

发布代码,这通常意味着您没有正确连接您的连接。 IB中的文件所有者TextController是什么?