ओह यार, यह मुझे कुछ दिनों के लिए सिरदर्द बना रहा था और यह पता नहीं चल सका कि यह कैसे करना है। सबसे बुरी बात यह थी कि मास्टर-डिटेल टेम्पलेट के साथ एक नया Xcode iOS प्रोजेक्ट बनाना ठीक काम करता था। सौभाग्य से, अंत में, वह छोटा तथ्य यह था कि मुझे इसका समाधान कैसे मिला।
कुछ पोस्ट हैं, जो मुझे पता है कि समाधान नई primaryViewControllerForCollapsingSplitViewController:
पद्धति को लागू करने के लिए है UISplitViewControllerDelegate
। मैंने कोशिश की कि कोई फायदा न हो। काम करने के लिए लगता है कि मास्टर-विस्तार टेम्पलेट में Apple क्या करता है नए को लागू करने के लिए (यह सब कहने के लिए एक गहरी साँस लें) splitViewController:collapseSecondaryViewController:ontoPrimaryViewController:
प्रतिनिधि विधि (फिर से UISplitViewControllerDelegate
)। डॉक्स के अनुसार , यह विधि:
प्रतिनिधि को प्राथमिक दृश्य नियंत्रक को समायोजित करने और द्वितीयक दृश्य नियंत्रक को ढह गए इंटरफ़ेस में शामिल करने का प्रयास करता है।
अधिक विशिष्ट विवरण के लिए उस विधि के चर्चा भाग पर पढ़ना सुनिश्चित करें।
जिस तरह से Apple इसे संभालता है:
- (BOOL)splitViewController:(UISplitViewController *)splitViewController
collapseSecondaryViewController:(UIViewController *)secondaryViewController
ontoPrimaryViewController:(UIViewController *)primaryViewController {
if ([secondaryViewController isKindOfClass:[UINavigationController class]]
&& [[(UINavigationController *)secondaryViewController topViewController] isKindOfClass:[DetailViewController class]]
&& ([(DetailViewController *)[(UINavigationController *)secondaryViewController topViewController] detailItem] == nil)) {
// Return YES to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded.
return YES;
} else {
return NO;
}
}
यह कार्यान्वयन मूल रूप से निम्नलिखित करता है:
- यदि
secondaryViewController
हम जो उम्मीद कर रहे हैं (ए UINavigationController
), और यह दिखा रहा है कि हम क्या उम्मीद कर रहे हैं ( DetailViewController
- आपके विचार नियंत्रक), लेकिन कोई मॉडल ( detailItem
) नहीं है, तो " Return YES to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded.
"
- अन्यथा, "
NO
स्प्लिट व्यू कंट्रोलर को विभाजित करने दें और द्वितीयक व्यू कंट्रोलर की सामग्री को ढह गए इंटरफ़ेस में शामिल करने दें"
परिणाम चित्र में iPhone के लिए निम्नलिखित हैं (या तो चित्र में शुरू या चित्र के लिए घूर्णन - या अधिक सटीक रूप से कॉम्पैक्ट आकार वर्ग):
- अगर आपका नजरिया सही है
- और एक मॉडल है, विवरण दृश्य नियंत्रक दिखाएं
- लेकिन कोई मॉडल नहीं है, मास्टर व्यू कंट्रोलर दिखाएं
- अगर आपका नजरिया सही नहीं है
- मास्टर दृश्य नियंत्रक दिखाएं
कीचड़ की तरह साफ़।
UISplitViewController
और हमेशाYES
उस विधि से वापस लौटा , फिर बस स्टोरीबोर्ड में विभाजन दृश्य वर्ग को बदल दिया, क्योंकि मैं हमेशा चित्र में iPhone पर मास्टर दिखाना चाहता हूं। :)