2012-11-13 8 views
11

Witaj Błąd występuje w emulatorze na iOS6.Widok może być powiązany tylko z maksymalnie jednym kontrolerem widoku naraz (UISegmentedControl)

*** 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>.' 

kod inicjacji

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; 

aplikacji awarii, gdy wybrany == 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]; 
} 

nie może zrozumieć, gdzie problem.

SearchHotelsViewController.xib

SearchHotelsViewController.xib

Odpowiedz

2

miałem podobny problem. Wiele plików xib, niektóre działały, niektóre nie, wszystkie miały jeden UITableView. Musiałem usunąć zepsute pliki xib i utworzyć nowe pliki. Potem wszyscy pracowali.

16

Upewnij się, że kontroler ViewController nie zawiera innego obiektu kontrolera widoku. Na przykład, jeśli główny kontroler widoku ma widok tabeli, nie umieszczaj UITableViewController z. To było używane do przekazywania w systemie iOS 5, ale w systemie iOS 6 nie pozwalają na to.

+0

+1 za fajną odpowiedź, iOS5 nie powoduje awarii aplikacji, ale iOS6 ma. – Girish

13

Wpadłem na to, kiedy byłem idiotą i przeciągnąłem obiekt "UITableViewController" do stalówki, aby służył jako widok zamiast "UITableView". Whoops!

+1

Haha, zrobiłem to samo. Dzięki za to! – Will

+3

Zrobiłem coś podobnego, stworzył XIB i dodał UIViewController-> UIView zamiast po prostu dodać UIVIew ... –

3

Napotkałem to podczas kopiowania/wklejania z Storyboard do pliku xib. Odtwarzanie interfejsu z Xib naprawiło ten problem dla mnie.

Powiązane problemy