0

全て、

コードから作成された、検索バーを備えた詳細な UITableView があります。アイテムが検索結果からクリックされたときに機能しないことを除いて、選択したアイテムで正常に機能します。デリゲート メソッドは起動しません。この種の動作は前に見たことがないので、問題がどこにあるのかわかりません。

標準の表のセルとカスタムの表のセルで同じ動作が得られます。

これに関するガイダンスに感謝し、感謝します。

ジャスト・ハング・ヒア ここに画像の説明を入力

//ViewController.h
 @interface SongsViewController : UITableViewController <UISearchBarDelegate,UISearchDisplayDelegate>
{
   NSMutableArray *searchData;
   UISearchBar *searchBar;
   UISearchDisplayController *searchDisplayController;
   UITableViewCell *customSongCell;
 }




 //ViewController.m
 -(void)viewDidLoad
 {
    [super viewDidLoad];

    CGRect screenRect = [[UIScreen mainScreen] bounds];
    CGFloat screenWidth = screenRect.size.width;

    searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, screenWidth, 88)];

   [searchBar setShowsScopeBar:YES];
   [searchBar setScopeButtonTitles:[[NSArray alloc] initWithObjects:@"Title",@"Style", nil]];

   searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];
   searchDisplayController.delegate = self;
   searchDisplayController.searchResultsDataSource = self;
   self.tableView.tableHeaderView = searchBar; 

   //Load custom table cell
    UINib *songCellNib = [UINib nibWithNibName:@"SongItem" bundle:nil];

  //Register this nib, which contains the cell
  [[self tableView] registerNib:songCellNib forCellReuseIdentifier:@"SongItemCell"];

  // create a filtered list that will contain products for the search results table.
  SongStore *ps = [SongStore defaultStore];
  NSArray *songObjects = [ps allSongs];

  self.filteredListContent = [NSMutableArray arrayWithCapacity: [songObjects count]];
  self.masterSongArr = [[NSMutableArray alloc] initWithArray:[ps allSongs]];

 [self refreshData];

 [self.tableView reloadData];
 self.tableView.scrollEnabled = YES;

}
4

1 に答える 1

4

この問題を修正しました。このsearchDisplayControllerデリゲートを設定するのを忘れました:

[searchDisplayController setSearchResultsDelegate:self];

したがって、これらすべてを設定してください。

searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];
[searchDisplayController setDelegate:self];
[searchDisplayController setSearchResultsDataSource:self];
[searchDisplayController setSearchResultsDelegate:self];
于 2012-06-28T20:52:45.790 に答える