Search code examples
iphoneuisearchbaruisearchdisplaycontrolleruitableview

Change the searchDisplayController table view style to grouped?


I have a searchDisplayController that searches a UITableView.

After entering the search terms, I can see another UITableView that contains the search results. However, I want this UITableView to be GROUPED, not PLAIN (like it is by default).

How do I do this?


Solution

  • If - like me - you think the plain TableView was way too ugly, you can also abandon the use of SearchDisplayController.

    I just:

    • inserted in an empty View a searchBar and a TableView as we usually do for IBOutlet
    • selected the File's owner as delegate for both of them.
    • At the beginin the number of section is 0 ([myTab count]) then I used reloadData and this time myTab is populated by the result.
    • [self.resultTableView reloadData];

    Here you can find all the method I used from the delegates

    @interface MyViewController : UIViewController <UIApplicationDelegate, UISearchBarDelegate> {
    
        IBOutlet UISearchBar *searchBar;
        IBOutlet UITableView *resultTableView;
    }
    
    @property (nonatomic, retain) IBOutlet UISearchBar *searchBar;
    @property (nonatomic, retain) IBOutlet UITableView *resultTableView;
    
      //For your searchBar the 2 most important methods are
    - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBarClicked;
    - (BOOL)searchBarTextDidEndEditing;
    
    
      //For your TableView the most important methods are in my case:
    
        //number of sections in the table view.
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
        //HEADERS
    - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;
        //different numbers of row by section
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
        //the cells themselves
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
    
    @end
    

    After all, the simplest solution is often the best...