2011-10-19 10 views
8

मैं स्टोरीबोर्ड उन में एक पुनरावर्ती तालिका दृश्य स्थापित करना चाहते हैं। रिकर्सिव द्वारा, मेरा मतलब है कि आप टेबल व्यू में किसी आइटम पर क्लिक करते हैं और यह तालिका दृश्य का एक नया उदाहरण लोड करता है, बस प्रदर्शित किए गए नए डेटा के साथ। इस तरह, मैं तालिका दृश्य कक्ष और तालिका दृश्य नियंत्रक में निहित तर्क का पुन: उपयोग कर सकता हूं। मेरे डेटा सरणियों के सरणियों के सरणियों में है ...स्टोरीबोर्ड उन आईओएस में रिकर्सिव तालिका दृश्य 4.2

केवल काम के आसपास मैं पा सकते हैं कि रूट दृश्य नियंत्रक के रूप में मेरी तालिका दृश्य नियंत्रक है ua नेविगेशन नियंत्रक सेट और फिर है कि मेरी टेबल का एक और उदाहरण पुश करने के लिए है नियंत्रक देखें। यह दूसरा टेबल व्यू कंट्रोलर तब मूल तालिका दृश्य नियंत्रक को धक्का देता है और मेरे पास मेरे रिकर्सिव टेबल व्यू कंट्रोलर हैं। मैं सिर्फ टेबल व्यू कंट्रोलर के डुप्लिकेशन को खत्म करने की कोशिश कर रहा हूं (भले ही यह केवल एक बार हो)।

धन्यवाद

मैं enter image description here

उत्तर

1

मैं किसी भी कारण है कि आप एक ही UITableViewController उपवर्ग उपयोग करने के लिए अपने स्टोरीबोर्ड डिजाइन नहीं कर सकते नहीं दिख रहा है क्या है के संदर्भ के लिए चित्र, रिकर्सिवली प्रयोग की जाने वाली । बस स्टोरीबोर्ड को इस तरह डिज़ाइन करें, फिर CreateForSegue का उपयोग करें: चयन को नियंत्रक के अगले उदाहरण में पास करने के लिए विधि।

क्या आपने सफलता के बिना यह कोशिश की है? आपको किस समस्या का सामना करना पड़ा?

+0

समस्या मैं समझ नहीं स्टोरीबोर्ड उन में खुद को ViewController कनेक्ट करने के लिए कैसे है, इसलिए मैं एक दूसरे को बनाने के लिए, नकल ViewController मजबूर कर रहा हूँ। पहला एक दूसरे के लिए segues, और दूसरे segues पहले, मुझे मेरे रिकर्सन मिल रहा है। मैं उस दूसरी, डुप्लिकेट प्रति से बचना चाहता हूं (ट्रैक रखने के लिए स्टोरीबोर्ड में बस अधिक कोड बनाता है)।मुझे यह दिखाने के लिए एक स्क्रीन शॉट लगाएगा कि मुझे क्या मिला है। धन्यवाद! –

+0

आप दृश्य नियंत्रक को स्वयं से कनेक्ट नहीं करेंगे। आप दो व्यू कंट्रोलर बनाएंगे जो समान सबक्लास (आपका व्यू कंट्रोलर) का उपयोग करते हैं। तो पहचान निरीक्षक में, आप उन सभी व्यू कंट्रोलर के लिए कक्षा को 'YourViewController' नाम बदल देंगे, जिन्हें आप रिकर्स करना चाहते हैं। – Simon

+0

यही मैंने किया था। लेकिन अब मुझे सिंक में व्यू कंट्रोलर के दो उदाहरण रखना है (अगर मैं आईबीओलेटलेट जोड़ता हूं, तो मुझे यह दोनों करना होगा)। दुनिया का अंत नहीं, बाद में त्रुटि के लिए एक संभावित जगह। –

4

मैं कुछ इस तरह के रूप में अच्छी तरह से करने की कोशिश कर रहा था। मैंने सेल प्रोटोटाइप को आपके स्क्रीनशॉट में आपके जैसे उच्च स्तर पर ज़ूम करके, फिर सेल पर राइट-क्लिक करके और टेबलव्यू में खींचकर सीगू तक लगा दिया। इससे मुझे सामान्य सेग विकल्प मिलते हैं।

+1

इस तरह यह किया गया है। कुंजी एक कदम ज़ूम कर रहा है। –

+0

ऐसा नहीं है कि यह कैसे किया जाता है क्योंकि प्रश्न यह है कि UITableViewController को अपने आप में कैसे कनेक्ट करें और UITableViewCell को UITableViewController पर कैसे कनेक्ट करें ... –

+0

यूआईटीबल व्यू कंट्रोलर के लिए कहीं भी कहीं भी नहीं है, कम से कम जिस तरह से वह चाहता है। Segue एक UITableViewCell से शुरू होता है और कुछ अन्य UIViewController उप-वर्ग की ओर जाता है ... यह समझ में आता है क्योंकि यह एक सेल है जिसे अगले दृश्य में जाने के लिए बातचीत की जा रही है, न कि तालिका दृश्य स्वयं। इस मामले में, आप इसे UITableViewController (संभवतः विभिन्न पैरामीटर के साथ, जैसे पेड़ संरचना में गहरी जाने) के किसी अन्य उदाहरण पर हुक करना चाहते हैं। – jerslan

4

आप स्टोरीबोर्ड संपादक की बाईं ओर दस्तावेज़ को रेखांकित दृश्य का विस्तार हैं, तो आप पर नियंत्रण खींचें कर सकते हैं तालिका सेल से एक ही दृश्य नियंत्रक तालिका सेल में है।

+0

हां आप ऐसा कर सकते हैं, लेकिन एकमात्र चीज यह है कि सेल को प्रतिनिधि के रूप में परिभाषित करना है ... यदि आप अपने स्टोरीबोर्ड में रिकर्सिस व्यू देखना चाहते हैं तो बहुत अधिक उपयोग नहीं करें। –

0

मैं एक समान स्थिति है जहाँ था मैं उपयोगकर्ता को प्रश्नों के बाद एक प्रश्न पूछ रहा था। मैंने जो किया वह 'अगला' बटन को वीसी में अपनी क्रिया के साथ रखा गया था, फिर उस क्रिया विधि में को अगले प्रश्नों के साथ अगले प्रश्न के साथ तत्काल प्रश्न के साथ तत्काल VC तुरंत चालू करें। बेशक पहला सवाल वीसी स्वयं है, तो प्रत्येक क्रमिक प्रश्न वीसी का एक और तत्काल है।

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard_iPhone" bundle:nil]; 
QuestionTableViewController *nextVC = [storyboard instantiateViewControllerWithIdentifier:@"QuestionTableViewController"]; 

[self.navigationController pushViewController:nextVC animated:NO]; 

नोट नहीं के लिए एनिमेटेड। ऐसा लगता है कि अगर आप हाँ कहते हैं तो अनचाहे आपको समस्याएं देगा। अभी तक एक बाहर नहीं लगा है।

मुझे ऐसा करना पड़ा क्योंकि प्रश्नों के अंत में मैं अनदेखा करना चाहता था और मैं अंत में वापस जाने के लिए स्क्रीन पर 1 से अधिक बटन का उपयोग नहीं करना चाहता था।

2

यह आप स्टोरीबोर्ड खुद की ओर इशारा करते पर segue के बारे में भूल करने की जरूरत है ऐसा करने के लिए। बस didSelectRowAtIndexPath प्रतिनिधि विधि का उपयोग करें, इसमें अपने डेटा का उपयोग करें, अपना व्यू कंट्रोलर बनाएं और तालिका दृश्य स्टैक में दबाएं। तैयार करने के लिए अगली दृश्य में initForSegue।

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    //initiate you new array 
    self.arrayForNewView = someArray; 
    //Now it's important that you give your table view controller in the identity inspector a Storyboard ID. In this case "MyGenericTableViewController" 
    UIViewController *myController = [self.storyboard instantiateViewControllerWithIdentifier:@"MyGenericTableViewController"]; 
    [self.navigationController pushViewController: myController animated:YES]; 

} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    //set data source next generic table view controller 
    MyGenericTableViewController *vc = [segue destinationViewController]; 
    vc.dataSource = self.arrayForNewView; 
} 
संबंधित मुद्दे