अपने विवरण है, उससे लगता है जैसे वहाँ तीन समस्याएं हैं:
पुश segues की आवश्यकता है कि स्रोत दृश्य नियंत्रक में एक नेविगेशन नियंत्रक में एम्बेड किया गया - इसके बजाय, आपके पास स्रोत दृश्य नियंत्रक से को नेविगेशन नियंत्रक को segue करने का प्रयास कर रहा है।
गंतव्य दृश्य नियंत्रक को स्टोरीबोर्ड में भी होना चाहिए।
एक बार जब आप स्टोरीबोर्ड का उपयोग कर रहे हों, तो आप आम तौर पर प्री-स्टोरीबोर्ड दुनिया (यानी, एक व्यू कंट्रोलर बनाने और इसे tableView:didSelectRowAtIndexPath:
में धक्का देकर) से नए व्यू कंट्रोलर को धक्का देने के लिए पैटर्न का पालन नहीं करना चाहते हैं ... ऐसा करने से स्टोरीबोर्ड आपके लिए किए गए काम का एक गुच्छा डुप्लिकेट करता है।
इसके बजाय
:
एक नेविगेशन नियंत्रक, और टैब दृश्य नियंत्रक में नेविगेशन नियंत्रक में अपने तालिका दृश्य नियंत्रक रखो।(आप इसे संपादक> एम्बेड करें मेनू में, या लाइब्रेरी से बाहर खींचकर और उनके बीच "रिलेशनशिप" कनेक्शन खींचकर कर सकते हैं।)
स्टोरीबोर्ड में अपना गंतव्य दृश्य नियंत्रक रखें (यदि यह नहीं है वहां पहले से ही) लाइब्रेरी से व्यू कंट्रोलर खींचकर और अपनी कक्षा को अपने व्यू कंट्रोलर क्लास (ConstantRateController
) पर सेट करके।
खींचें गंतव्य दृश्य नियंत्रक करने के लिए तालिका दृश्य सेल से एक धक्का segue:

सभी तीन चरणों के बाद, अपने स्टोरीबोर्ड इस तरह दिखना चाहिए:

अंत में, तालिका दृश्य नियंत्रक में, निम्न लागू करें:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// test segue.identifier if needed
MyViewController *viewController = segue.destinationViewController;
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
// set properties of viewController based on selection indexPath
}
segue दृश्य नियंत्रक बनाता है और धक्का देता है; आपको बस इतना करना है कि इसे कॉन्फ़िगर करें ताकि इसकी सामग्री तालिका चयन को प्रतिबिंबित करे जो सेगू का कारण बनती है। (ध्यान दें कि यदि आप तालिका दृश्य नियंत्रक से कई segues है, तो आप आईबी में प्रत्येक एक अद्वितीय पहचानकर्ता देने के लिए और prepareForSegue:sender:
पर परीक्षण करना उचित गंतव्य दृश्य नियंत्रक कॉन्फ़िगर करने के लिए करना चाहिए।)
आप एक से अधिक का समर्थन करने की जरूरत है तालिका दृश्य से बाहर segues किस सेल पर चुना गया था, यह थोड़ा अलग है। जाहिर है, स्टोरीबोर्ड उन कोशिकाओं के बारे में नहीं जान सकता जो आपके प्रतिनिधि/डेटा स्रोत द्वारा आबादी में हैं, इसलिए आप सेल से सीग्स सेट नहीं कर सकते हैं ... कम से कम गतिशील तालिका में नहीं।
ऐसा लगता है कि आप सेटिंग दृश्य की तरह कुछ हो सकते हैं जहां आपके पास कक्षों का एक स्थिर सेट है जहां प्रत्येक को किसी अन्य दृश्य (जैसे सेटिंग के कुछ पृष्ठ) पर जाना चाहिए। उस स्थिति में, आप स्टोरीबोर्ड से प्राप्त एक और विशेषता को देखना चाहेंगे: स्थिर तालिका। यदि आप आईबी में टेबल व्यू (टेबल व्यू कंट्रोलर नहीं) का चयन करते हैं, तो विशेषता इंस्पेक्टर के शीर्ष आपको गतिशील प्रोटोटाइप और स्टेटिक सेल के बीच टॉगल करने देता है - पूर्व जो मैंने ऊपर वर्णित किया है, और बाद वाला आपको कोशिकाएं बनाने देता है और अनुभाग और आईबी में पूरी तरह से अपनी सामग्री संपादित करें। स्थैतिक कोशिकाओं के साथ आप प्रत्येक से एक अलग सेगू बना सकते हैं ... ताकि आप बहु-पृष्ठ सेटिंग्स-जैसी यूआई को पूरी तरह से आईबी में पूरी तरह से बना सकें (बेशक, स्विच करने के दौरान आपको कुछ करने के लिए कोड की आवश्यकता होगी और क्या नहीं)।
आप एक गतिशील तालिका से बाहर कई segues समर्थन करने के लिए की जरूरत है, तो आप दो चीजों की आवश्यकता होगी:
segues के लिए एक अलग मूल - यदि आप अनेक segues बाहर आने नहीं हो सकता है एक सेल के, लेकिन आप (टेबल) दृश्य नियंत्रक से बाहर कई segues बाहर आ सकते हैं।
उपयोगकर्ता की कार्रवाई के आधार पर एक segue चुनने के लिए तर्क। यहां हम tableView:didSelectRowAtIndexPath:
पर वापस आ गए हैं, लेकिन नया दृश्य नियंत्रक बनाने और इसे नेविगेशन नियंत्रक पर धक्का देने या इसे सामान्य रूप से पेश करने के बजाय, आप self
पर performSegueWithIdentifier:
पर कॉल करें।
वहाँ एक छोटे से अधिक Apple's view controllers guide में this answer में इस तरह के पर विस्तार, और अधिक सामान्य रूप में स्टोरीबोर्ड प्रोग्रामिंग प्रथाओं पर है:
आपके उत्तर के लिए धन्यवाद, मैंने निर्देशों का पालन किया है और उपर्युक्त कोड जोड़ा है, लेकिन जब मैं इसे तैयार करता हूं तो ForSegue कभी नहीं बुलाया जाता है। मुझे क्या याद आया? – user616076
शीर्ष अनुमान: 1) क्या आपका 'तैयार करने के लिए: प्रेषक:' सही वर्ग में विधि है? यह दृश्य नियंत्रक में होना चाहिए जो segue (आपकी तालिका दृश्य नियंत्रक) शुरू करता है। 2) तालिका दृश्य नियंत्रक वास्तव में कक्षा है? यह सुनिश्चित करने के लिए आईबी में पहचान निरीक्षक की जांच करें कि यह अभी भी एक सामान्य 'UITableViewController' नहीं है। – rickster
यह ठीक काम कर रहा है अब धन्यवाद, ऐसा इसलिए था क्योंकि मैंने सेग्यू पहचानकर्ता को ठीक से सेट नहीं किया था। क्या होता है यदि मैं एकाधिक सेगुए में स्विच करना चाहता हूं, तो मेरी तालिका से प्रत्येक चयन 10 अन्य रूपों में से किसी एक पर जा सकता है? – user616076