3

ストーリーボードを使用していて、UITableViewにUISearchbarを実装したいと考えています。UISearchbarControllerは新しいUITableViewを生成し、次の戦略を使用します。

if (tableView == self.tableView)
   //Populate table view with normal data
else
   //Populate table view with search data

最初の問題は、カスタムセルを処理することです。cellForRowAtIndexPathでそれらをインスタンス化する必要があります。通常、これはnibファイルから行います。ストーリーボードを使用してこれを行うにはどうすればよいですか?dequeueReusableCellWithIdentifierはnilを返します。

2番目の問題は、テーブルビューから詳細ビューへのセグエに関するものです。セグエは通常のテーブルビューで開始されますが、検索テーブルビューでは開始されません。ストーリーボードはすべてを非表示にするため、検索テーブルビューのセルにセグエを割り当てる方法がわかりません。

誰か助けてもらえますか?ありがとう!

4

3 に答える 3

6

最初の問題に関しては、ViewControllerタイプをUITableViewControllerからUIViewControllerに変更し、その中にテーブルビューを追加して、テーブルビューにIBOutletを追加することで解決しました。

@property (strong, nonatomic) IBOutlet UITableView *_tableView;

アウトレットを使用してテーブルセルをデキューします

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MyTableViewCell *cell=[_tableView dequeueReusableCellWithIdentifier:productMasterCellIdentifier];
    // .. modify your cell
    return cell;
}
于 2012-06-23T12:43:04.233 に答える
1

2番目の問題について:セルからではなく、ビューコントローラからセグエをリンクします。ストーリーボードに異なる名前のセグエを2つ作成する必要があります。次に、行が選択されたときに手動でセグエを呼び出します。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([tableView isEqual:self.searchDisplayController.searchResultsTableView]) {
        [self performSegueWithIdentifier:@"fromSearchResults" sender:self];
    }
    else {
        [self performSegueWithIdentifier:@"fromAll" sender:self];
    }
}  

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"fromSearchResults"]) {
        ..........
        ..........
    }
    else {
        ..........
        ..........
    }
}
于 2012-03-12T22:02:26.433 に答える
0

これが私がしたことです:

1)initWithStyle:reuseIdentifier:でカスタムセルを初期化し、layoutSubviewsでレイアウトを実装しました。そのため、ストーリーボードからセルをロードする方法がまだわかりません。

2)ストーリーボードのセグエを使用する代わりに、ナビゲーションスタックにビューをプッシュしました。

于 2012-02-14T07:53:26.270 に答える