Вид может быть связан только с одним контроллером представления одновременно (UISegmentedControl)

Hello Ошибка возникает в эмуляторе на iOS6.

*** Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'A view can only be associated with at most one view controller at a time! View <UIView: 0xa3ae880; frame = (0 0; 320 367); autoresize = W+H; layer = <CALayer: 0xa3ae8e0>> is associated with <SearchHotelsViewController: 0xa3a6a20>. Clear this association before associating this view with <SecondViewController: 0xa1a9e90>.'

Код инициализации

UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Поиск туров", @"Выбор отеля", nil]];

segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
self.navigationItem.titleView = segmentedControl;

[segmentedControl addTarget:self action:@selector(changeSegments:) forControlEvents:UIControlEventValueChanged];
segmentedControl.selectedSegmentIndex = 0;
self.navigationItem.title = [segmentedControl titleForSegmentAtIndex:segmentedControl.selectedSegmentIndex];
[self setView:searchTours];

SearchHotelsViewController *searchHotelsController = [[SearchHotelsViewController alloc] initWithNibName:@"SearchHotelsViewController" bundle:[NSBundle mainBundle]];
selectHotels = searchHotelsController.view;

Сбой приложения при выборе == 1

-(void)changeSegments:(id)sender {
    NSInteger selected = [sender selectedSegmentIndex];
    if (selected == 0) {
        [self setView:searchTours];
    }
    if (selected == 1) {
        [self setView:selectHotels];
    }
    self.navigationItem.title = [sender titleForSegmentAtIndex:selected];
}

Я не могу понять, где проблема.

SearchHotelsViewController.xib

SearchHotelsViewController.xib

Ответ 1

Убедитесь, что ваш ViewController не содержит другого объекта контроллера вида. Например, если ваш основной контроллер представления имеет табличное представление, не помещайте UITableViewController с ним. Он используется для передачи в iOS 5, но в iOS 6 они не разрешают этого.

Ответ 2

Я столкнулся с этим, когда я был идиотом и перетащил объект "UITableViewController" в nib, чтобы служить представлением вместо "UITableView". Упс!

Ответ 3

Я столкнулся с этим, когда копировал/вставлял из раскадровки в xib файл. Воспроизведение интерфейса из xib исправило эту проблему для меня.

Ответ 4

У меня была аналогичная проблема. Несколько файлов xib, некоторые из них работали, а некоторые - нет, у всех был один UITableView. Мне пришлось удалить разбитые xib файлы и создать новые файлы. После этого все они работали.