ठीक है, आप में से कुछ के लिए यह सवाल हास्यास्पद लगता है लेकिन मैं अपने साथियों के साथ आईओएस ऐप के डिजाइन के बारे में चर्चा कर रहा हूं और मुझे इसके बारे में आपकी राय चाहिए।क्या हमें दो दृश्यों के बीच पुश सेग्यू लूप से बचना चाहिए?
पुराने डिज़ाइन जो मैं असहमत के रूप में
- हम ViewControllerA जो बटन शामिल है निम्नलिखित "बी करने के लिए जाओ" है। बटन एक धक्का segue है बी में जाने के लिए
- हम ViewControllerB जो व्याप्ति बटन एक धक्का segue है हम 2 ViewController एक के बीच जाने की जरूरत ए
- पर जाने के लिए "एक करने के लिए जाओ" बटन शामिल है बहुत।
जैसा कि आप देख सकते हैं, व्यू कंट्रोलर ए और बी के बीच एक सेगु लूप है और मुझे लगता है कि हमें इसे कभी नहीं होने देना चाहिए। मैं नेविगेशन बार में "बैक" बटन से बी से ए में जाना पसंद करूंगा।
डिजाइन में पुश सेगु लूप कितना गंभीर है? क्या यह कुछ मामलों में स्वीकार्य है? मैं कहां से सेब की सिफारिश अच्छे डिजाइन देख सकते हैं
संपादित करें (यदि कोई हैं?): मैं कोशिश "पॉप धक्का से पहले" समाधान nfarshchi द्वारा लेकिन ऐसा नहीं work.This करना है मैं कैसे किया: 1) मैं वीसी ए से वीसी बी और सीसी बी से वीसी ए तक एक ही समय में सीगू नहीं बना सकता। ऐसा लगता है कि स्टोरीबोर्ड इसे 2 होने से रोकता है 2) इस प्रकार मैं एक सेगू बनाता हूं जिसका पहचानकर्ता वीसी ए से वीसी बी में बटन "गो टू बी" बटन से "गेटोबी" है और एक सीग्यू जिसका पहचानकर्ता बटन से "गोटोओ" है "ए टू गो "कुलपति ए के लिए कुलपति बी में
तो स्टोरीबोर्ड होगा इस तरह दिखता है:
कुलपति एक्स --- पुश ---> कुलपति एक < ---- पुश ----> कुलपति बी (कारण मैं ViewController एक्स की जरूरत बाद में समझाया गया है) 3) कुलपति ऐ में यह है:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"Prepage for segue go to B") ;
if ([[segue identifier] isEqualToString:@"gotoB"]) {
[self.navigationController popViewControllerAnimated:NO];
}
}
मैं कुलपति एक्स जरूरत है क्योंकि मैं नहीं कर सकता यदि वहां केवल एक व्यू कंट्रोलर है तो स्टैक से व्यू कंट्रोलर पॉप करें।
अब यह सही लगता है, लेकिन जब मैंने "बी टू गो" पर क्लिक किया, तो यह इसके बजाय वीसी एक्स पर गया। यह स्पष्ट रूप से था कि उपर्युक्त पॉपव्यू कंट्रोलरएनिएटेड: वीसी ए पॉप किया गया है, और यह सब कुछ है, वीसी बी के लिए सीगू अब निकाल दिया गया था। नतीजा यह था कि वीसी बी को स्टैक में धक्का नहीं दिया गया था।
इस प्रकार मुझे लगता है कि यह nfarshchi के समाधान को लागू करने के अव्यावहारिक है
धन्यवाद। लेकिन मुझे नहीं लगता कि "पुश से पहले पॉप" के बारे में आपका समाधान – grandagile
काम करेगा, कोई मतलब नहीं, मेरा मतलब यह नहीं था कि आप धक्का देने से पहले पॉप करते हैं, मैं 'UINavigationController' का उपयोग करके कह रहा था, आप केवल एक बार अपने 'UIViewController' को दबा सकते हैं और आप भी कर सकते हैं एक साधारण बैक बटन है। और इसे फिर से पॉप करने की कोई ज़रूरत नहीं है। 'UINavigationController' आपके लिए ऐसा करेगा। – nfarshchi
मान लें कि आपके पास 'ViewControllerA' और' ViewControllerB' है। 'ए' पर आपके पास एक बटन हो सकता है और [self.navigationController pushViewController: viewControllerB एनिमेटेड: हाँ]; – nfarshchi