2012-11-13 10 views
11

हैलो त्रुटि आईओएस 6 पर एमुलेटर में होती है।एक दृश्य केवल एक समय में सबसे अधिक दृश्य नियंत्रक से जोड़ा जा सकता है (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>.' 

प्रारंभ कोड

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

उत्तर

2

मैं एक ऐसी ही समस्या थी। एकाधिक xib फ़ाइलें, कुछ काम करते हैं, कुछ नहीं थे, सभी के पास एक एकल UITableView था। मुझे टूटी हुई xib फ़ाइलों को हटाना था और नई फाइलें बनाना था। उसके बाद वे सब काम किया।

16

सुनिश्चित करें कि आपके व्यू कंट्रोलर में कोई अन्य व्यू कंट्रोलर ऑब्जेक्ट नहीं है। उदाहरण के लिए यदि आपके मुख्य दृश्य नियंत्रक के पास टेबलव्यू है, तो UITableViewController को अंदर से न रखें। यह आईओएस 5 में पास होता था, लेकिन आईओएस 6 में वे इसे अनुमति नहीं देंगे।

+0

+1 अच्छे उत्तर के लिए, आईओएस 5 ऐप को क्रैश नहीं करता है लेकिन आईओएस 6 है। – Girish

13

जब मैं एक बेवकूफ था और "UITableViewController" ऑब्जेक्ट को "UITableView" के बजाय दृश्य के रूप में प्रस्तुत करने के लिए "UITableViewController" ऑब्जेक्ट को खींच लिया तो मैं इसमें भाग गया। ओह!

+1

हाहा, मैंने वही काम किया। इसके लिए धन्यवाद! – Will

+3

मैंने कुछ ऐसा किया, एक एक्सआईबी बनाया और यूआईवीव कंट्रोलर-> UIView को केवल UIVIew जोड़ने के बजाय जोड़ा ... –

3

जब मैंने स्टोरीबोर्ड से एक xib फ़ाइल में कॉपी/चिपकाया तो मुझे इसका सामना करना पड़ा। Xib से इंटरफ़ेस को दोबारा मेरे लिए इस मुद्दे को ठीक किया गया।

संबंधित मुद्दे