1

您好正在创建一个包含两个原型单元格的表格。按钮“Cell One”连接到方法btnCellOneTouched,按钮“Cell Two”连接到btnCellTwoTouched。每个原型单元格中的按钮都有标签 0,文本字段有标签 1。

每个原型单元都有自己的标识符——分别是 cellOnecellTwo。这是我的.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”当我运行程序时。

我为在运行时创建的单元格中的按钮分配方法的方式有什么问题?

如果我注释掉添加目标的行,它可以正常工作。

这个让我困惑了一段时间。请帮忙。

谢谢,安贾恩。

4

0 回答 0