2012-06-14 19 views
17

पर सेग्स/स्टोरीबोर्ड का उपयोग कर वर्तमान दृश्य पॉप करें IOS 5 एसडीके का उपयोग कर एक ऐप बना रहा हूं। मैंने स्टोरीबोर्ड के सेग्स का उपयोग करके विचारों को धक्का दिया, लेकिन मुझे वर्तमान दृश्य को पॉप करने और पिछले एक पर वापस जाने का उचित तरीका नहीं मिल रहा है।आईओएस 5

मैं किसी भी नेविगेशन नियंत्रक का उपयोग नहीं कर रहा हूं (ऐप में कोई शीर्ष या निचला बार नहीं है)।

मुझे नहीं लगता कि मोडल या पुश सेग्यू का उपयोग करना अन्य तरीकों से समाधान होगा क्योंकि यह एक नए नियंत्रक को तुरंत चालू करता है।

क्या मुझे अंत में विपरीत एनीमेशन और दृश्य को हटाने के साथ एक कस्टम सेगु का उपयोग करना है? या कोई बेहतर तरीका है ?

उत्तर

24

आप उस नियंत्रक से [self dismissViewControllerAnimated:YES completion:nil]; पर कॉल करने का प्रयास कर सकते हैं जिसे आप खारिज करना चाहते हैं (चाहे नियंत्रक को धक्का दिया गया हो या मॉड्यूल दिखाया गया हो)। UIViewController Class Reference

पेश दृश्य नियंत्रक यह प्रस्तुत दृश्य नियंत्रक नकारने के लिए जिम्मेदार है:

यहाँ संबंधित दस्तावेज़ है। यदि आप इस विधि को प्रस्तुत दृश्य नियंत्रक पर स्वयं कहते हैं, तो यह स्वचालित रूप से प्रस्तुत दृश्य नियंत्रक को संदेश अग्रेषित करता है।

+0

बिल्कुल मुझे जो चाहिए, धन्यवाद। – Jukurrpa

+16

नोट: यह _not_ काम w/नेविगेशन नियंत्रक (पॉप करने के लिए) करता है। –

+0

ग्रेट;)। आपने मेरा दिन बना दिया :)। धन्यवाद – androniennn

53

आईओएस 5 में स्टोरीबोर्ड एक सेग्यू से वापस आने के लिए "नो-कोड" तरीका प्रदान नहीं करते हैं - यह कुछ है जो आपको स्वयं को लागू करने की आवश्यकता होगी।

यदि आप "पुश" segues (जिसे नेविगेशन नियंत्रक की आवश्यकता होती है) का उपयोग करते हैं, तो अंतिम पुश सेगू को पूर्ववत करने के लिए नेविगेशन नियंत्रक की popViewControllerAnimated: विधि का उपयोग करें। (या अन्य तरीकों अधिक पूर्ववत करने के लिए; UINavigationController दस्तावेज़ देखें।)

आप "मोडल" segues उपयोग करते हैं, दृश्य (जो आप अपने presentingViewController संपत्ति से प्राप्त कर सकते हैं), जो वर्तमान दृश्य नियंत्रक प्रस्तुत नियंत्रक पर dismissViewControllerAnimated:completion: कहते हैं।


अद्यतन: iOS 6 में और बाद में वहाँ जाने "वापस" एक स्टोरीबोर्ड में के लिए खोलना segues है। यह अभी भी नो-कोड समाधान नहीं है - और ऐसा नहीं होना चाहिए, क्योंकि आपको मोडल व्यू कंट्रोलर से "पूर्ण" और "रद्द करें" निकास के बीच अंतर करने जैसी चीजों को करने में सक्षम होना चाहिए। लेकिन यह आपको स्टोरीबोर्ड में अपने ऐप के अधिक अर्थपूर्ण प्रवाह को रखने देता है। ऐप्पल में tech note that describes them in detail है, और वे the video from WWDC 2012 Session 407 में भी शामिल हैं।

16

बस स्पष्ट करने के लिए।

धक्का दिया गया वर्ग में। बस निम्न को तार करें और नियंत्रक और दृश्य पॉप अप हो जाएगा।

[self.navigationController popViewControllerAnimated:YES]; 
3

अपने स्ट्रायबोर्ड पर सेगू प्रकार "कस्टम" बनाएं। यह एक बटन से हो सकता है। "popSegue" नामक एक नया UIStoryboardSegue क्लास बनाएं popSegue.m फ़ाइल में निम्न जोड़ें;

-(void)perform{ 
    UIViewController *sourceViewContreoller = [self sourceViewController]; 
    [sourceViewContreoller.navigationController popViewControllerAnimated:YES]; 
} 

-स्टोरीबोर्ड संपादक में।

segue का चयन करें

और Segue कक्षा बदलने के लिए "popSegue"

पहचानकर्ता के लिए "popSegue"

हो गया सेट!

आप अपनी परियोजना में एक ही "popSegue" कक्षा का उपयोग कर सकते हैं।

आशा इस मदद करता है

2

मैं भी Xcode 5 उपयोग कर रहा हूँ और यहाँ कि यह कैसे हुआ है। सबसे पहले, दृश्य कोड फ़ाइल में है कि अन्य धक्का दे दिया, इस जैसे ज फ़ाइल में एक IBAction विधि बनाने के लिए:

- (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender; 

Then in the .m file add this: 

- (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender { 

} 

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