1つのオプションは、
[myButton addTarget:yourOtherClass action:@selector(mySelector:) forControlEvents:UIControlEventTouchUpInside];
を使用してボタンを設定することですが、あなたは割り当てが解除されたオブジェクトにメッセージを送ることができるようにtarget
が保持されていないため、これは少し危険です。
プロトコルで定義された方法は、私が代わりに行うために(self.delegate)
のチェックを行っている可能性がオプションではありませんでしたとして、あなたが代わりにあなたの実装に続いて
MyController.m
- (IBAction)buttonTapped:(UIButton *)button
{
if ([self.delegate respondsToSelector:@selector(myController:buttonTapped:)]) {
[self.delegate myController:self buttonTapped:button];
}
}
をプロトコル
MyController.h
@protocol MyControllerDelegate
- (void)myController:(MyController *)controller buttonTapped:(UIButton *)button;
@end
@interface MyController : UIViewController
@property (nonatomic, assign) id <MyControllerDelegate> delegate;
- (IBAction)buttonTapped:(UIButton *)button;
@end
を設定できますrespondsToSelector
の代わりに設定されていることを確認してください。
私はアプリの「ターゲット」を決して捨てないので、最初のことを使用しました。しかし、私はあなたのアプリが変わる可能性があるので、それを使用する理由を教えてくれて非常に感謝しています。 – Jacksonkr