私はストーリーボードで遊んでいて、1つのコントローラーUITableView
に対して2つのセクションで構成されるを設定しました。両方のセクションで、静的セルをいくつか追加しました。ただし、コードパスに応じて、2つのセクションに異なるヘッダーを表示したいと思います。ソースもデリゲートも関与していないので、どのようにオーバーライドする必要がありますtableView:titleForHeaderInSection:
か?
2 に答える
静的テーブルビューを使用すると、データソースを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を実装したり呼び出したりしないでください。独自のコンテンツが必要な場合は、上記のようなコードを使用してください。
私はあなたの質問に少し混乱しています、おそらく私はもう少し情報が必要です。ストーリーボードにViewControllerがあり、テーブルViewオブジェクトをそのView Controllerにドラッグしたと言っていますか?
その場合でも、このView Controllerは、そのテーブルビューのデータソースおよびデリゲートになることができます。
.hファイル内:@interface VIEWCONTROLLERNAME:UIViewController <UITableViewDataSource、UITableViewDelegate>
.mファイルで、「不完全な実装エラー」を回避するために、cellForRowAtIndexPathおよびnumberOfRowsInSection(必須およびオプションのメッセージについてはドキュメントを参照)のそれぞれに必要なメソッドを宣言する必要があります。これは、titleForHeaderInSectionをオーバーライドできる場所でもあります。
ストーリーボードに戻り、テーブルビューを右クリックして、データソースと委任オプションをビューコントローラーにドラッグします(または[接続インスペクター]タブでドラッグします)。
これがあなたのしていることではない場合は、もう少し情報を提供してください。