我正在尝试使用 addTarget:action:forControlEvents:
将委托(delegate)的方法分配给 UIButton。一切都在没有警告的情况下编译,IBOutlet 连接到 Interface Bulder (XCode 4) 中的按钮。如果我将委托(delegate)的方法移动到 Controller ,它就可以正常工作。 (所有代码都运行良好,但我重构为使用委托(delegate),这是我第一次尝试使用委托(delegate)和协议(protocol)。)
(添加)协议(protocol)声明,放在.h中的@interface之前:
@protocol MMGLVDelegate<NSObject>
-(void)receiveQuitRequest:(id)sender;
@end
在 Controller 界面中,这些属性:
@property (nonatomic, assign) id<TheDelegateProtocol> delegate;
@property (nonatomic, retain) IBOutlet UIButton *quitBtn;
在 Controller 实现中:
-(void)setDelegate:(id<MMGLVDelegate>)delegate {
DLog(@"MMGLVSegmented setDelegate: Entered");
_delegate = delegate;
[self.quitBtn addTarget:self.delegate action:@selector(receiveQuitRequest:)
forControlEvents:UIControlEventTouchUpInside];
}
感谢任何帮助。将目标更改为 self.delegate、_delegate 或 delegate 中的任何一个都不会更改应用程序行为。
我希望做的是不必声明一个类 receiveQuitRequest: 然后传递给委托(delegate),我宁愿直接从控件转到委托(delegate)。
最佳答案
我觉得你应该写
[self.quitBtn addTarget:delegate action:@selector(receiveQuitRequest:)
forControlEvents:UIControlEventTouchUpInside];
我不确定,但这可能适用于你的情况
关于objective-c - Obj C 委托(delegate)方法未分配给 UIButton (iOS)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6707062/