Skip to content

Compatibility with UISearchController [Xcode 6 beta 5] #33

@hokster7

Description

@hokster7

In iOS 8, UISearchDisplayController has been deprecated in favour of using UISearchController instead.

The interface of UISearchController works quite differently: it takes a result view, as well as a so called id <UISearchResultsUpdating> delegate to let the user have a chance of updating the UI.

- (void)updateSearchResultsForSearchController:(UISearchController *)searchController;

I thought TLTableViewController's automatic table updates would provide a perfect drop-in implementation of this method. All one needs to do is update the data model:

- (void)updateSearchResultsForSearchController:(UISearchController *)searchController {
    NSString *searchText = searchController.searchBar.text;

    // ... Create a new array-based data model based on the search text.
    TLIndexPathDataModel *dataModel = f(searchText);
    self.indexPathController.dataModel = dataModel;  // implicitly calls `performUpdates... on table view`
}

However, surprisingly, this does not actually work. The UI of the table view doesn't get updated with the latest rows.

I'm using ignoreDataModelUpdates = YES and an explicit [tableView reloadData] to workaround this for the time being.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions