2012-11-13 3 views
11

Hallo Der Fehler tritt im Emulator unter iOS6 auf.Eine Ansicht kann jeweils nur mit höchstens einem Ansichtscontroller verknüpft sein (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>.' 

Initialisierungscode

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; 

App stürzt ab, wenn ausgewählt == 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]; 
} 

Ich kann nicht verstehen, wo das Problem ist.

SearchHotelsViewController.xib

SearchHotelsViewController.xib

Antwort

2

hatte ich ein ähnliches Problem. Mehrere xib-Dateien, einige arbeiteten, andere nicht, alle hatten ein einziges UITableView. Ich musste die defekten xib-Dateien löschen und neue Dateien erstellen. Danach haben sie alle gearbeitet.

16

Stellen Sie sicher, dass Ihr ViewController kein anderes View-Controller-Objekt enthält. Wenn Ihr Hauptansicht-Controller beispielsweise über eine Tabellenansicht verfügt, fügen Sie den UITableViewController nicht ein. Dies wurde in iOS 5 übernommen, in iOS 6 wird dies jedoch nicht zugelassen.

+0

+1 für nette Antwort, iOS5 nicht Absturz der App, aber iOS6 hat. – Girish

13

Ich stieß auf diese, als ich ein Idiot war und zog ein "UITableViewController" -Objekt in die Spitze, um als eine Ansicht statt einer "UITableView" zu dienen. Hoppla!

+1

Haha, ich habe das Gleiche gemacht. Danke dafür! – Will

+3

Ich habe etwas Ähnliches gemacht, ein XIB erstellt und einen UIViewController-> UIView hinzugefügt, anstatt einfach das UIVIew hinzuzufügen ... –

3

Ich fand dies, wenn ich aus einem Storyboard in eine XIB-Datei kopiert/eingefügt. Die Wiederherstellung der Schnittstelle von der XIB hat dieses Problem für mich behoben.

Verwandte Themen