Verwenden von AutoLayout programmgesteuert für die Suchleiste und UITableView

Ich habe eine Containeransicht, die fast im Vollbildmodus ohne Statusleiste angezeigt wird.

Ich habe dann einen UISearchController und eine UITableView erstellt. Ich benutze ios 9 und mache Dinge programmatisch. Der Fehler, den ich habe, ist, wenn die Suchleiste berührt wird, die Bereichsoptionen darunter geöffnet werden, aber die Tabellenansicht nicht richtig nach unten rutscht. Wie behebe ich das?

Der Code in meinem viewDidLoad ist:

// Search controller
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.dimsBackgroundDuringPresentation = NO;
self.searchController.searchBar.scopeButtonTitles = @[@"A", @"B", @"C"];
self.searchController.searchBar.delegate = self;
[self.searchController.searchBar setTranslatesAutoresizingMaskIntoConstraints:NO];

// UITableView
self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
self.tableView.translatesAutoresizingMaskIntoConstraints = NO;

// Container view is defined as the whole screen except 20 points at the top where the status bar is
[containerView addSubview:self.searchController.searchBar];
[containerView addSubview:self.tableView];

// The constraints - something is probably wrong here?

// Search bar constraints
NSDictionary *views2 = @{@"searchBar": self.searchController.searchBar};
[containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[searchBar]|" options:0 metrics:nil views:views2]];
[containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[searchBar]|" options:0 metrics:nil views:views2]];

// Tableview constraints
NSDictionary *views = @{@"tableView": self.tableView};
[containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[tableView]|" options:0 metrics:nil views:views]];
[containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[tableView]|" options:0 metrics:nil views:views]];

Ich muss sicherstellen, dass die Optionen für den Suchleistenbereich und die Tabellenansicht richtig zusammen passen. Wie wird das programmatisch gemacht?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage