分割ビュー コントローラーを使用する iPad アプリがあります。マスター ビュー内には、ストーリーボードで定義されたカスタム テーブル セルを使用して表示されるアイテムのリストがあります。
セルは、Xcode で選択した暗い背景で完全に期待どおりに表示されます。
と を使用していUISearchBar
ますUISearchDisplayController
。
検索を開始すると、リストが標準の白いテーブル セルに変わります。
SearchDisplayController でカスタム セルを使用するにはどうすればよいですか?
検索フィールドに入力すると、コールバックがフィルタリングされた結果のリストを更新します。
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller
shouldReloadTableForSearchString:(NSString *)searchString
{
[self filterAvailableChannelsForSearchText:searchString scope:[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
return YES;
}
これは、完全なリストまたはフィルター処理されたリストのいずれかを表示するために、テーブル ビューの処理で使用されます。CellIdentifier は、セルのストーリーボードの識別子と一致します。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (tableView == self.searchDisplayController.searchResultsTableView)
return [self.filteredAvailableChannel count];
else
return [[self availableChannelList] count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"AvailableChannelCell";
FVAvailableChannelCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Configure the cell...
FVChannel *channel = nil;
int row = [indexPath row];
if (tableView == self.searchDisplayController.searchResultsTableView)
channel = [self.filteredAvailableChannel objectAtIndex:row];
else
channel = [[self availableChannelList] objectAtIndex:row];
cell.idLabel.text = channel.channelID;
cell.nameLabel.text = channel.channelName;
cell.unitLabel.text = channel.unitName;
return cell;
}
searchDisplayController がカスタム セルを使用しないのはなぜですか?
2012 年 7 月 31 日更新:
すべての絵コンテ接続を 2 回、3 回チェックした後 (これは正しいようです)、あることに気付きました…</p>
私は実際にカスタム セルを取得していることがわかります。標準セルのように見えます。
修正後、tableView:heightForRowAtIndexPath:
あることに気が付きました。セルを選択すると、カスタム セルがそこにあることがわかりますが、カスタム セルの背景色を無視しているように見えるため、標準の白い背景の上にカスタムの白いテキストを表示して、空のセル。
カスタム セル クラスのブレークポイントはinitWithStyle:reuseIdentifier:
ヒットしないため、何かが正しくありません。
ポインタ:
- SearchResultsController のセルでカスタムの背景色を取得するには何が欠けていますか?
- カスタム セルの initWithStyle がヒットしないのはなぜですか? ストーリーボードのセルのクラスとして設定されています。