2

私はストーリーボードで遊んでいて、1つのコントローラーUITableViewに対して2つのセクションで構成されるを設定しました。両方のセクションで、静的セルをいくつか追加しました。ただし、コードパスに応じて、2つのセクションに異なるヘッダーを表示したいと思います。ソースもデリゲートも関与していないので、どのようにオーバーライドする必要がありますtableView:titleForHeaderInSection:か?

4

2 に答える 2

4

静的テーブルビューを使用すると、データソースをUITableViewControllerに接続できます(接続する必要があります)。重要なのは、データソースメソッドを実装すると、テーブルビューで設定した静的コンテンツが上書きされることです。これがあなたがしたいことなので、問題なくtitleForHeaderをオーバーライドできます。

-(NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return @"HELLO!";
    else {
        return [super tableView:tableView titleForHeaderInSection:section];
    }
}

静的テーブルのセクション0のタイトルをHELLO!に設定し、xibで設定されたタイトルを上書きします。他はxibにあったように残されます。

重要な点は、UITableViewControllerがすべてのデータソースメソッドの独自のバージョンを実装することを除いて、静的テーブルは動的テーブルとまったく同じ方法で入力されることです。これらのメソッドは、おそらくxibファイルから情報を読み取り、適切な情報をテーブルビューに送り返します。静的コンテンツが必要な場合は、superを実装したり呼び出したりしないでください。独自のコンテンツが必要な場合は、上記のようなコードを使用してください。

于 2012-05-21T20:22:44.183 に答える
0

私はあなたの質問に少し混乱しています、おそらく私はもう少し情報が必要です。ストーリーボードにViewControllerがあり、テーブルViewオブジェクトをそのView Controllerにドラッグしたと言っていますか?

その場合でも、このView Controllerは、そのテーブルビューのデータソースおよびデリゲートになることができます。

.hファイル内:@interface VIEWCONTROLLERNAME:UIViewController <UITableViewDataSource、UITableViewDelegate>

.mファイルで、「不完全な実装エラー」を回避するために、cellForRowAtIndexPathおよびnumberOfRowsInSection(必須およびオプションのメッセージについてはドキュメントを参照)のそれぞれに必要なメソッドを宣言する必要があります。これは、titleForHeaderInSectionをオーバーライドできる場所でもあります。

ストーリーボードに戻り、テーブルビューを右クリックして、データソースと委任オプションをビューコントローラーにドラッグします(または[接続インスペクター]タブでドラッグします)。

これがあなたのしていることではない場合は、もう少し情報を提供してください。

于 2012-05-21T20:06:47.730 に答える