在UITableView错误中填充多个部分中的单元格

时间:2014-03-18 05:27:06

标签: ios objective-c uitableview

我对这段代码的问题/区别感到困惑。在第一个工作示例中,我正在从自定义类加载表视图。这很有用。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"EventCell";
    ISEventsCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    cell.backgroundColor = [UIColor colorWithWhite:.2 alpha:.7];

    ISSingleEvent *singleEvent = events[indexPath.row];
    [cell populateWithEvents:(singleEvent)];

    return cell;
}

现在我想在表视图中添加第二部分,在添加cellForRowAtIndexPath的条件之前,一切似乎都很顺利。我收到错误“没有可见的'UITableViewCell接口'声明选择器'populateWithPasses:'

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier1 = @"EventCell";
    static NSString *CellIdentifier2 = @"FlareCell";
    NSString *identityString = @"";
    switch ([indexPath section]) {
        case 0: {
            identityString = CellIdentifier1;
            break;
        }
        case 1: {
            identityString = CellIdentifier2;
            break;
        }

        default:
            break;
    }
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identityString];

    if ([indexPath section] == 0) {

        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2
                                      reuseIdentifier:CellIdentifier1];
            cell.backgroundColor = [UIColor colorWithWhite:.2 alpha:.7];

            ISSingleEvent *singleEvent = events[indexPath.row];

            // Error here (below) "No visible interface for 'UITableViewCell' declares the selector 'populateWithEvents:'
            [cell populateWithEvents:(singleEvent)];
        }
    } else {
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                      reuseIdentifier:CellIdentifier2];
            cell.backgroundColor = [UIColor colorWithWhite:.2 alpha:.7];
            ISFlareEvent *singleEvent = flareEvents[indexPath.row];

            // Error here (below) "No visible interface for 'UITableViewCell' declares the selector 'populateWithFlares:'"
            [cell populateWithFlares:(singleEvent)];
        }
    }

return cell;
}

那我在这里做错了什么?当我只用一个部分调用“populateWithEvents”时,它没有抛出错误。现在我已经设置了两个部分,每个部分都有自己的tableviewcell,它只是不起作用。任何帮助将不胜感激。

谢谢,

1 个答案:

答案 0 :(得分:0)

像这样投射你的细胞

 [(ISEventsCell *)cell populateWithFlares:(singleEvent)];

您正在尝试为populateWithFlares:致电UITableviewCell。方法是为ISEventsCell

定义的