1

デリゲートメソッドを使用してUITableViewにデータを入力しています。特定の条件下では、セルを返さないようにします。ただし、次のデリゲート関数では、UITableViewCellを戻り型として定義する必要があります。nilを返すことは機能しません(コード例のswitchケースを参照)。

- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell"];
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"UITableViewCell"];

    switch (indexPath.section){
        case 0:
                switch (indexPath.row){
                    case 0:
                        if ([eventItemObject eventDescription]){
                            return cell;
                        } else {
                            return nil;
                        }
                        break;
                        ...
                    default:
                    break;
                }
            break;
            ...
        default:
        break;
    }

    return cell;
}

特定の条件下でセルを返さない方法は?

4

3 に答える 3

4

このようにはできないと思います(間違っている場合は訂正してください)。cellForRowメソッドでUITableViewCellインスタンスを返す必要があります。

メソッドを編集してみてくださいtableView:numberOfRowsInSection。条件に応じて、正しい番号のみを返します。

于 2012-11-10T20:43:44.597 に答える
1

tableView:numberOfRowsInSectionまたはを使用してこれを操作する必要がありますnumberOfSectionsInTableView:tableView

于 2012-11-10T20:46:59.037 に答える
1

[eventItemObject eventDescription]がfalseを返すアイテムを削除するには、配列をフィルター処理してから、そのフィルター処理された配列を使用してテーブルにデータを入力する必要があると思います。そうすれば、numberOfRowsInSectionやnumberOfSectionsInTableViewは正しい番号を返します。

于 2012-11-10T23:11:06.550 に答える