articles

Home / DeveloperSection / Articles / Roles of Main View Controller when using Search Display Controller

Roles of Main View Controller when using Search Display Controller

Tarun Kumar2508 06-Nov-2015

Search Display Controller is responsible for displaying searched records that are searched by Search Bar on main view controller. Exp: when we starts a search then Search Display Controller superimposes the search interface over the view's of main view controller, and after displayed searched results in its table view. 


To manage searched data when using search display controller, as a helper the Main View Controller plays 4 roles, roles are as follows:


1.    It has 'searchResultsDataSource' to provide data for the results table for the search results table view.


2.    It has 'searchResultsDelegate' that responds on the user's selected item in the results table for the search results table view.


3.    It has 'delegate' for the search display controller, that responds on events, like starting/ending of search and Showing/Hiding of the search interface.


The 'delegate' has information about the changes to the search string or search scope, this information helps to the results table view to be reloaded as needed.


4.    Delegate responds on changes in the search criteria of the search bar.

 

Here is an example that shows how to configure a search display controller in the


Interface Builder:


searchController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar

contentsController:self];

searchController.delegate = self;

searchController.searchResultsDataSource = self;

searchController.searchResultsDelegate = self;

 

With the help of the table view data source and delegate methods we can check the method's argument of table view, to find which table view is sending the message, use following code :


-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

if(tableView == self.tableView)

{

return ... ;

}

// if necessary (if self is the data source for other table view),

// check whether tableView is searchController.searchResultsTableView.

return ...;

}

 

 


Updated 24-Nov-2019

Leave Comment

Comments

Liked By