संदर्भ

मेरे पास 3 व्यू कंट्रोलर हैं। ए खोलता है बी जो सी खोलता है। मेरे पास बी और सी में बैक बटन है। मैं चाहता हूं कि बैक बटन सी -> बी से और बी -> ए से व्यू कंट्रोलर को फिर से लोड किए बिना जाएं। मैंने व्यू कंट्रोलर को खारिज करने की कोशिश की।

समस्या

अगर मैं सी की तुलना में बी पर जाता हूं और सी को खारिज कर देता हूं तो यह बी पर वापस चला जाता है लेकिन फिर अगर मैं बी को खारिज कर देता हूं तो यह वापस सी पर जाता है, ए को नहीं

A -> B -> C -> back -> B -> back -> C

Should be: A -> B -> C -> back -> B -> back -> A

कोड

ए, बी और सी में:

@IBAction func backButton(_ sender: Any) {
     dismiss(animated: true)
}
0
toiavalle 13 फरवरी 2017, 19:22
1
क्या आप संक्रमण और जीवनचक्र को संभालने के लिए UINavigationController का उपयोग कर रहे हैं?
 – 
Jacob King
13 फरवरी 2017, 19:23
ऐसी स्थिति में आपको popViewController का उपयोग करना चाहिए। यदि आप UINavigationController का उपयोग करते हैं तो स्टैक के रूप में नियंत्रक एक दूसरे के ऊपर जोड़े जाते हैं। यदि आप। एक नियंत्रक को खारिज करने की कोशिश कर रहे हैं तो उदाहरण (ए-बी-सी) सी को खारिज कर देता है और बी अपने शीर्ष पर आता है इसलिए यह अभी भी सी के नीचे है। इसलिए आप ए के बजाय सी पर वापस जाते हैं।
 – 
Tushar Sharma
13 फरवरी 2017, 19:29
मैं एक आराम से बहस का उपयोग करने की सलाह दूंगा।
 – 
GetSwifty
13 फरवरी 2017, 20:01

1 उत्तर

सबसे बढ़िया उत्तर

नेविगेशन को स्वयं संभालने के बजाय UINavigationController और push UIViewControllers का उपयोग करें। UINavigationController बैक बटन के सही व्यवहार को संभालेगा (कोई IBAction की आवश्यकता नहीं है)

उदा. अपने ViewController-A में इस तरह sth लागू करें:

 @IBAction func showB() {
    navigationController?.pushViewController(viewControllerB, animated: true)
 }

और व्यू कंट्रोलर-ए को rootViewController के रूप में अपने स्टोरीबोर्ड में UINavigationController के रूप में एम्बेड करें या प्रोग्रामेटिक रूप से इस तरह

let viewControllerA = ViewControllerA() // or instantiate from storyboard
let masterNavigationController = UINavigationController(rootViewController: viewControllerA)
1
MarkHim 13 फरवरी 2017, 19:24
बहुत बहुत धन्यवाद @MarkHim। क्या मुझे एक ही NC में एकाधिक VC का उपयोग करना चाहिए या प्रत्येक VC के लिए एक NC का उपयोग करना चाहिए? मैं StoryBoard में एक से अधिक VC को एक ही NC से कैसे जोड़ सकता हूँ?
 – 
toiavalle
13 फरवरी 2017, 21:23
1
पहले कंट्रोलर से कनेक्ट करें। फिर शेष के लिए segue का उपयोग करें।
 – 
Tushar Sharma
13 फरवरी 2017, 21:54