您好正在创建一个包含两个原型单元格的表格。按钮“Cell One”连接到方法btnCellOneTouched,按钮“Cell Two”连接到btnCellTwoTouched。每个原型单元格中的按钮都有标签 0,文本字段有标签 1。
每个原型单元都有自己的标识符——分别是 cellOne和cellTwo。这是我的.m文件中的代码。变量都是正确的,没有错误。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
intNumRows = 0;
numSections = 1;
}
- (NSInteger)numberOfSectionsInTableView: (UITableView *)tableView
{
return numSections;
}
- (NSInteger)tableView: (UITableView *)tableView numberOfRowsInSection: (NSInteger)section
{
return intNumRows;
}
- (void)displayRowNum:(id)sender
{
UIButton *btn = (UIButton *)sender;
NSLog(@"%d", btn.tag);
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:strCellType];
if(cell == nil)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:strCellType];
[(UIButton *)[cell viewWithTag:0] addTarget:self action:@selector(displayRowNum:) forControlEvents:UIControlEventTouchUpInside];
return cell;
}
- (IBAction)btnCellOneTouched:(id)sender
{
strCellType = @"cellOne";
intLastRow = [tblMain numberOfRowsInSection:0];
indexPath = [NSIndexPath indexPathForRow:intLastRow inSection:0];
intNumRows++;
[tblMain insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationRight];
}
- (IBAction)btnCellTwoTouched:(id)sender
{
strCellType = @"cellTwo";
intLastRow = [tblMain numberOfRowsInSection:0];
indexPath = [NSIndexPath indexPathForRow:intLastRow inSection:0];
intNumRows++;
[tblMain insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationRight];
}
由于未捕获的异常“NSInvalidArgumentException”,我收到错误终止应用程序,原因:“-[UITableViewCell addTarget:action:forControlEvents:]: unrecognized selector sent to instance 0x90638e0”当我运行程序时。
我为在运行时创建的单元格中的按钮分配方法的方式有什么问题?
如果我注释掉添加目标的行,它可以正常工作。
这个让我困惑了一段时间。请帮忙。
谢谢,安贾恩。