2011-04-12 10 views
6

मुझे एक स्प्लिट व्यू टेम्पलेट प्रोजेक्ट मिला है। मैं रूटव्यू कंट्रोलर में आइटम का चयन करने वाले उपयोगकर्ता पर DetailView को बदलना चाहता हूं।आईओएस: SplitView टेम्पलेट में DetailView को गतिशील रूप से कैसे बदलें?

असल में मैं उस दृश्य के अंदर क्या नहीं बदल सकता (विवरण दृश्य) जैसे टेम्पलेट में किया गया है (जब आप प्रोजेक्ट बनाने पर "कोर डेटा स्टोरेज का उपयोग करें" चेक करते हैं)। मैं पूरे विचारों के बीच स्विच करना चाहता हूं।

AppDelegate *appDelegate = [UIApplication sharedApplication].delegate; 
[appDelegate.detailViewController setView:curretnDetailViewController.view]; 
appDelegate.detailViewController = currentDetailViewController; 

तरह से मुझे समझ नहीं आता क्यों मुझे लाइन # 2 की क्या ज़रूरत है द्वारा (..setView: ..)

मुझे लगता है कि कोशिश की है? क्यों विवरण ViewController असाइन करना (लाइन # 3) पर्याप्त नहीं है? -। कोड लग रहा है भयंकर = (

लेकिन वैसे भी है कि वास्तव में काम नहीं करता है के रूप में मैं चाहता हूँ detailView को छोड़कर सब कुछ गायब हो जाता है जैसे कि मैंने मुख्य दृश्य, बदल दिया है न सिर्फ DetailViewController के

मुझे लगता है मैं में कुछ बदलना चाहिए। splitViewController लेकिन क्या = (

आपका ध्यान के लिए धन्यवाद बाहर नहीं मिला।

उत्तर

18

मैं भी एक सप्ताह के बारे में अपने प्रश्नों के पहले थी और मैं भी इस मंच। मुझे आशा है कि मैं तुम्हारे लिए है कि बदल सकते हैं में थोड़ी मदद मिल गया

सबसे पहले आपको पता था कि सेब में एक विस्तृत विवरण उदाहरण है? यह Apple Examples

आपको समझना होगा कि एक स्प्लिटव्यू कंट्रोलर क्या है जो ऐप्पल क्या कर रहा है इसका विचार प्राप्त करना है। स्प्लिटव्यू नियंत्रक के बारे में सोचें अपने डिवाइस विंडो में एक कंटेनर के रूप में। इस कंटेनर में 2 डिब्बे हैं, एक पतली बाएं हाथ की तरफ एक बड़ा दायां हाथ है। अब किसी भी तरफ बदलने के लिए आपको इस डिब्बे को समान आकार और प्रकृति के दूसरे डिब्बे से बदलना होगा। आप वहां एक डिब्बे नहीं डाल सकते जो फिट नहीं होता है या जो कुछ फैंसी कारण बनाता है, यह बस फिट नहीं होगा।

तकनीकी बात में उदाहरण के लिए नीचे दिए गए कोड को ढूंढें। स्प्लिटव्यू नियंत्रक में 2 दृश्यों की एक सरणी है और आप इस सरणी में दृश्यों को बदल सकते हैं। इस प्रकार इस सरणी में 2 विचार हैं जिन्हें बाएं नेविगेशन कंट्रोलर कहा जाता है और दाएं detailviewcontroller है। यदि आप एक दृश्य आवंटित करते हैं और आरंभ करते हैं और इसे इन दोनों में से किसी एक में जोड़ते हैं तो यह दृश्य splitviewcontroller में वर्तमान दृश्य को प्रतिस्थापित करेगा।

NSArray *viewControllers = [[NSArray alloc] initWithObjects:self.navigationController, detailViewController, nil]; 
splitViewController.viewControllers = viewControllers; 
अब आप अपने सवाल का दूसरा भाग को

- जो मुझे लगता है कि बाएं हाथ की ओर आप हमेशा कुछ चुन सकते हैं और दाहिने हाथ की ओर परिवर्तित करने के लिए सक्षम होने के लिए सक्षम होने के लिए सक्षम होना चाहते हैं से है .... क्या मैं सही हू?

मैंने ऐसा करने के तीन अलग-अलग तरीकों को पढ़ा है और किसी को भी नहीं देखा है जो कहता है कि एक दूसरे से बेहतर है।

  1. एक अधिसूचना सेट अप - जिससे आप बाईं ओर कुछ पर क्लिक करते हैं तो दाहिने हाथ पर एक नोटिसेशन भेजा जाता है।
  2. जब आप बाएं हाथ की निचली या रूट दृश्य से शुरू करते हैं तो आपके दायीं तरफ एक संदर्भ होगा, यदि आप बाईं तरफ सबव्यू इत्यादि जोड़ते हैं तो आप हमेशा दाईं ओर एक संदर्भ के साथ पास करते हैं।
  3. जिस तरह से मैंने इसे किया था, वह एपडिलेगेट में या रूटव्यू प्रतिनिधि में प्रोटोकॉल स्थापित करना था, फिर एक विचार पर कि मैं दाएं हाथ से बात करना चाहता हूं, यह इस प्रोटोकॉल का उपयोग करता है और मेरा दायां हाथ इस प्रोटोकॉल को लागू करता है।आखिरी बार मैंने सीखा क्योंकि यह अन्य विचारों से बात करने के लिए मोडल विचारों को प्राप्त करने का एक पसंदीदा तरीका है।

मैं एक विशेषज्ञ नहीं हूं इसलिए मैंने ऊपर दिए गए 3 विकल्पों में से प्रत्येक के लिए कोड नहीं जोड़ा है, जो मैं सुझाव देता हूं कि आप विषयों के लिए थोड़ी सी गुगलिंग करते हैं और आप उदाहरण देखेंगे। यदि आप वास्तव में एक पर अटक जाते हैं तो मुझे बताएं और मैं उन उदाहरणों के साथ फिर से खोजने की कोशिश करूंगा जो मैंने पहले पाया था। कम से कम जटिल मुझे लगता है नंबर 1 है।

मुझे उम्मीद है कि यह आपको सही दिशा में ले जाएगा।

+1

क्या आपके पास अभी भी ऊपर सूचीबद्ध तीसरी विधि का उदाहरण है? – JimmyP

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