1

こんにちは、委任は初めてです。私が持っているのは、委任プロトコルを含むカスタム テーブル ビュー セルを持つ 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);
}

私の実装に何か問題がありますか?

ありがとう

4

2 に答える 2

4

以下のように、 PositionViewController.mのコードを編集します。

- (UITableViewCell *)tableView:(UITableView *)tableView 
                     cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   // Other code to draw the cell
   cell.delegate = self;
   return cell;
}
于 2013-08-28T05:14:21.423 に答える