こんにちは、委任は初めてです。私が持っているのは、委任プロトコルを含むカスタム テーブル ビュー セルを持つ TableView です。
そして、カスタム ビュー セルのサブビューであるボタンをクリックすると、ViewControllers メソッドに値を渡すイベントが発生します。
TableView は、View Controller 内にあります。
customviewcell は正常に動作しています。ボタンがクリックされたときにログに記録し、正常に動作しますが、呼び出された状態に入りたくない場合self.delegate respondsToSelector:@selector(btnEditParentLabelText:)
これが私のcustomviewcell.hです
// ParentTableCell.h
#import <UIKit/UIKit.h>
@protocol ParentTableCellDelegate <NSObject>
@optional
- (void)btnEditParentLabelText:(NSString *)amountParentLabel;
@end
@interface ParentTableCell : UITableViewCell
@property (strong,nonatomic) IBOutlet UITextField *parentLabel;
@property (nonatomic, weak) id <ParentTableCellDelegate>delegate;
-(IBAction)btnEditParentLabel:(id)sender;
@end
customviewcell.m (すべてのコードが委任に必要なコードであるとは限りません)
// ParentTableCell.m
#import "ParentTableCell.h"
-(IBAction)btnEditParentLabel:(id)sender{
NSLog(@"click btn");
if ([self.delegate respondsToSelector:@selector(btnEditParentLabelText:)]) {
NSLog(@"Inside");
[self.delegate btnEditParentLabelText:@"test"];
}
};
@end
これは、TableParentCellDelegate を実装し、TableView を含むビュー コントローラーです。
// PositionViewController.h
#import <UIKit/UIKit.h>
#import "ParentTableCell.h"
@interface PositionViewController : UIViewController<UITableViewDelegate,UITableViewDataSource,UIAlertViewDelegate,ParentTableCellDelegate>
{
UIAlertView *addPostionpopup;
}
#define addPositionAlert 1
#define deletePositionAlert 2
@property(nonatomic,strong) IBOutlet UITableView *positionTable;
- (IBAction)btnAddPosition:(id)sender;
@end
そして、その m ファイルは、デリゲートに使用されるメソッドを配置するだけです。
- (void)btnEditParentLabelText:(NSString *)amountParentLabel{
NSLog(@">>> %@", amountParentLabel);
}
私の実装に何か問題がありますか?
ありがとう