1

嗨,我是委托的新手,我拥有的是一个 TableView,它带有一个包含委托协议的自定义表格视图单元格。

当我单击自定义视图单元的子视图按钮时,它会触发一个事件,该事件会将值传递给我的 ViewControllers 方法。

TableView 在视图控制器内部。

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 回答
0

这样做


 //  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, assign) id <ParentTableCellDelegate>delegate;//made assign for delegates

 -(IBAction)btnEditParentLabel:(id)sender;

 @end

 .m file of ur custom cell
 @synthesize delegate; //synthesize it



 //  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 file of your PositionViewController
  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {

  //checkings and all stuffs

  if(cell == nil)
  {
  cell //initilise
  cell. delegate = self; // this is important

  }
  return cell;
 }


于 2013-08-28T05:17:05.483 回答