1

我有UITableView5 个单元格。当每个被点击时,它们会做不同的事情。但是现在(为了让代码不会太长),当被点击时,它们都会调用NSLog.

这是代码。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *newCell = [_randomCells cellForRowAtIndexPath:indexPath];

    if ([(newCell) isEqualToString:@"Random cell 1"]) {
        NSLog(@"foo bar 1.");
    } else if ([(newCell) isEqualToString:@"Random cell 2"]) {
        NSLog(@"foo bar 2.");
    } else if ([(newCell) isEqualToString:@"Random cell 3"]) {
        NSLog(@"foo bar 3.");
    } else if ([(newCell) isEqualToString:@"Random cell 4"]) {
        NSLog(@"foo bar 4.");
    } else if ([(newCell) isEqualToString:@"Random cell 5"]) {
        NSLog(@"foo bar 5.");
    }
}

我认为这将是UITableViewCell使用 Storyboard 检测窃听 s 的最合适的方法,因为我找不到另一种方法来做到这一点。

但是,在所有五个 if 语句中,我都会收到以下错误消息:

No visible @interface for 'UITableViewCell' declares the selector 'isEqualToString:'

我将如何解决这个问题?提前致谢。

请注意,我正在使用 Objective-C ARC 输入代码并使用 Storyboards。

4

2 回答 2

3

看起来您正在检查单元格中显示的文本?如果是这样,您需要该textLabel属性。

尝试这个:

[newCell.textLabel.text isEqualToString:@"Random cell 1"]

祝你好运!

于 2013-09-15T01:01:26.123 回答
0

您可以使用 indexpath 检测被点击的 UITableViewCell ...

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row==0 ) 
        NSLog(@"foo bar 1.");
     else if (indexPath.row==1)
        NSLog(@"foo bar 2.");
    else if (indexPath.row==2)
        NSLog(@"foo bar 3.");
    else if (indexPath.row==3) 
        NSLog(@"foo bar 4.");
    else if (indexPath.row==4) 
        NSLog(@"foo bar 5.");
}
于 2013-09-15T02:58:25.000 回答