我的问题可能有点愚蠢,但为什么不能在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的子类)。
答案 0 :(得分:2)
您可以将出口和操作连接到nib文件中的任何对象。在Interface Builder中将NSObject
形式的库调色板拖到nib文件中。然后转到信息面板的“标识”选项卡并设置对象的类。
这样你就可以从你的笔尖实例化任何类的任何对象。如果要挂钩的目标是从nib文件静态创建的。确保文件的所有者至少有一个对象的引用,否则它将在创建后立即释放。发件人不会保留目标。
如果要挂钩的对象不应该从您的nib静态创建,那么在从nib-file实例化的类中实现awakeFromNib
并在代码中挂接目标。
最后一个选项是你在nib文件中根本没有自己的子类。然后在initWithNibName:bundle:
子类中实现UIViewController
,并在调用超级实现后在代码中连接目标。
答案 1 :(得分:0)
发布代码,这通常意味着您没有正确连接您的连接。 IB中的文件所有者TextController是什么?