如果numberOfRowsInSection返回count 0,则为Section中的默认文本

时间:2014-02-14 08:48:37

标签: uitableview ios6

我在TableView中有两个部分,它们各自的sectionHeaders。 numberOfRowsInSection动态计算&它也可能是0.所以我想在0行的情况下在部分的某处显示默认文本。 我该怎么做呢 ? (适用于iOS 6,XCode-4.2)

1 个答案:

答案 0 :(得分:1)

为什么不在“空白部分”的单元格中显示默认文本? 而不是返回0行返回1并将默认文本放在那里。它可以是这样的:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Verify is the section should be empty or not
    if(emptySection == NO) {
        return numberOfRowsInSection;
    }
    else {
        return 1;
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"Cell Identifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if(!cell)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }

    if(emptySection && indexPath.row == 0) {
        cell.textLabel.text = @"This is the default text";
    }
    else {
        // Display the normal data
    }    

    return cell;
}

<强>更新

以下代码将避免在点击包含默认文本的单元格时执行任何操作。

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(emptySection) {
        return;
    }

    // Perform desired action here
}

另一种解决方案是完全阻止选择单元格:

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)path
{
    if(emptySection) {
        retur nil;
    }

    return path;
}