2

ストーリーボードを使用しておらず、iOS 6 です。

すべてのセルが同じタイプの場合にどうすればよいかがわかりますが、複数のタイプのセルを含むグループ化されたテーブル ビューが必要です。例として、最初のセルが である必要がありUITableViewCellStyleValue1、2 番目のセルが である必要がUITableViewCellStyleSubtitleあり、3 番目のセルがカスタム セル ( UITableViewCellxib を持つサブクラスであるため、 で使用できる) であるとしregisterNib:forCellReuseIdentifier:ます。

ほとんどの場合、 を構成する最善の方法がわかりませんtableView:cellForRowAtIndexPath:。しかし、カスタム セルまたはそれらすべてを登録する必要があるかどうかはわかりません。

これを行う最善の方法は何ですか?

4

2 に答える 2

3

あなたは正しい道を進んでいます。カスタムセルは他の場所で使用されているため、xib はそれをロードするのに最適な場所です。実装に関しては、このようなことができます。

テーブルビューが「静的」で 3 つのセルがあると仮定すると、カスタム nib を に登録できますviewDidLoad

- (void)viewDidLoad
{
    [super viewDidLoad];

    UINib *customCellNib = [UINib nibWithNibName:@"CustomCell" bundle:nil];
    [self.tableView registerNib:customCellNib forCellReuseIdentifier:@"CustomIdentifier"]
}

次にcellForRowAtIndexPath:

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

    UITableViewCell *cell = nil;

    if(indexPath.row == 0) {

        cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier1"];

        if(cell == nil) {

            cell = [[UITableViewCell alloc]  initWithStyle:UITableViewCellStyleValue1
                                           reuseIdentifier:@"CellIdentifier1"];
        }
    }
    /* Cell 2 ommited for brevity */
    else if(indexPath.row == 2) {

        //Just to demonstrate the tableview is returning the correct type of cell from the XIB
        CustomCell *customCell = [tableView dequeueReusableCellWithIdentifier:@"CustomIdentifier"];
        cell = customCell;
    }

    [self configureCell:cell atIndexPath:indexPath];

    return cell;
}

最後に、Xib の IB でIdentifier、セルに適切な値を設定します。

Xib - IB のセル

アップデート

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {

    if(indexPath.row == 0) {
        cell.textLabel.text = [NSString stringWithFormat:@"Cell %d", indexPath.row];
    }
    else {

        //custom cell here
        //cell.textfield.text = @"blah blah";
    }
}

セルの構成メソッドは、主にNSFetchedResultsController (および使用されるデリゲート) を使用して配置されるテーブルビュー セルの規則のようなものです。

cellForRowAtIndexPath:これは、再利用されたセルを適切な内容でリセットし、読みやすくするための便利な方法です。configureCell の複数のバージョンを作成configureCustomCell1:atIndexPathして、読みやすさをさらに向上させています。

お役に立てれば!

于 2013-04-03T03:11:44.687 に答える
0

静的テーブルを使用している場合、セルが再利用されることはないため、識別子などを再利用する必要はありません。テーブルを「グループ化」スタイルの「静的セル」に設定し、必要なセクションの数を設定するだけです。[テーブル ビュー セクション] をクリックして、セクション内の行数を設定できます (必要なヘッダー/フッターも設定できます)。

ストーリーボードの例

次に、必要に応じてセルを構成します。デフォルトのセルを選択するか、セルを「カスタム」にしてオブジェクト ライブラリから UI コンポーネントをドラッグすることができます。通常のビューのコンポーネントの場合と同じように、静的テーブル セルのコンポーネントを設定することができIBOutletsます。IBActions

セルの構成

于 2013-04-02T15:37:49.327 に答える