2012-05-10 14 views
7

मैं UISplitViewController और स्टोरीबोर्ड का उपयोग करके एक आईपैड ऐप को एक साथ रखने की कोशिश कर रहा हूं। मास्टर व्यू 6 मेनू विकल्पों के तालिका दृश्य से जुड़े नेविगेशन नियंत्रक के साथ शुरू होता है। तालिका में प्रत्येक कक्ष नेविगेशन स्टैक पर एक अलग तालिका दृश्य नियंत्रक को धक्का देता है। यह मास्टर व्यू के लिए ठीक काम कर रहा है। प्रत्येक मास्टर व्यू में एक टेबल सूची होती है जिसे क्लिक किए जाने पर विस्तार फलक में एक अलग दृश्य नियंत्रक प्रदर्शित करने की आवश्यकता होती है। मैंने वर्तमान में इसे 'प्रतिस्थापन' और 'विस्तार स्प्लिट' पर एक सेग्यू सेट के साथ किया है जो पहली बार पंक्ति पर क्लिक करने पर काम करता है, लेकिन जैसे ही आप मास्टर व्यू में दूसरी पंक्ति पर क्लिक करते हैं, या डिवाइस को घुमाते हैं तो ऐप क्रैश हो जाता है EXC_BAD_ACCESS के साथ।आईओएस - स्टोरीबोर्ड के साथ यूआईएसप्लिट व्यू कंट्रोलर - एकाधिक मास्टर व्यू और एकाधिक विवरण दृश्य

मुझे पूरा यकीन है कि मेरी समस्याएं यूआईएसप्लिट व्यू कंट्रोलर के लिए कैसे सेट की गई हैं। मैं उलझन में हूं कि इसका उपयोग कैसे किया जाना चाहिए जब मेरे पास एकाधिक मास्टर वीसी और एकाधिक विवरण वीसी हैं। प्रतिनिधि कोड कहां रखा जाना चाहिए - मास्टर या विस्तार? क्या मुझे प्रत्येक दृश्य नियंत्रक में UISplitViewControllerDelegate प्रोटोकॉल ईवेंट लागू करना है?

किसी भी मदद की सराहना की।

उत्तर

16

यदि विभाजित दृश्य नियंत्रक प्रतिनिधि विस्तारित दृश्य नियंत्रक था जिसे प्रतिस्थापित किया गया था, तो यह दुर्घटना का कारण है। प्रतिस्थापित विस्तार दृश्य नियंत्रक को हटा दिया जा रहा है और इसलिए विभाजित दृश्य नियंत्रक प्रतिनिधि अब वैध ऑब्जेक्ट का संदर्भ नहीं है।

आप प्रतिनिधि को अद्यतन में अपडेट कर सकते हैं ForSegue: प्रेषक:। उदाहरण के लिए:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"MySegue"]) { 
     UIViewController *destinationViewController = [segue destinationViewController]; 
     if ([destinationViewController conformsToProtocol:@protocol(UISplitViewControllerDelegate)]) { 
      self.splitViewController.delegate = destinationViewController; 
     } 
     else { 
      self.splitViewController.delegate = nil; 
     } 
    } 
} 

कौन सा नियंत्रक आप उपयोग देखने प्रतिनिधियों के लिए अपने दृष्टिकोण को नियंत्रक पदानुक्रम पर निर्भर है। सबसे सरल मामले में, splitVC विवरण को आवंटित किए गए किसी भी व्यू कंट्रोलर को शायद प्रतिनिधि होने की आवश्यकता होगी। आप उन सभी को एक सामान्य सुपर क्लास पर आधार देना चाहते हैं जो साझा स्प्लिट व्यू कंट्रोलर प्रतिनिधि तर्क को संभालता है।

+0

बहुत धन्यवाद क्रिस, अच्छा स्पष्टीकरण। –

+0

मेरा दिन बचा लिया है। –

+0

उसने वास्तव में मेरी मदद की! – Fogh

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