प्रोग्रामेटिक रूप से iOS पर नेविगेशन कंट्रोलर बैक बटन को कॉल करें


84

UINavigationController- आधारित iPhone ऐप में, एक विधि में मैं बैक बटन को दबाए जाने और एक दृश्य के वापस जाने के प्रोग्रामेटिक समतुल्य प्रदर्शन करना चाहूंगा।

यानी स्वचालित रूप से जॉब बटन दबाएं जैसा कि यहां देखा गया है:

नेविगेशन नियंत्रक छवि

क्या कोई सामान्य आईओएस कॉल मैं कर सकता हूं, या अधिक जानकारी की आवश्यकता है?

जवाबों:


188

UINavigationControllerकी -popViewControllerAnimated:विधि आप क्या चाहते हैं करना चाहिए:

[navigationController popViewControllerAnimated:YES];

12
भयानक, स्टीव और नील्स के लिए धन्यवाद। मेरे द्वारा उपयोग किया गया समाधान था [self.navigationController popViewControllerAnimated: YES]; आसान;)
ओबेरबाम

यह यूटैबबार पर जोड़े गए व्यूकंट्रोलर्स को छोड़कर महान काम करता है। कोई सुराग ??
विराट

1
मैंने जोड़ा [self.navigationController popViewControllerAnimated:YES];लेकिन यह कुछ भी नहीं करता है, हालांकि उस बटन को टैप करने पर अलर्ट है जो काम कर रहा है।
mohsin.mr

हम्म, मुझे एक खाली स्क्रीन, एक अनुत्तरदायी ऐप और कंसोल में निम्नलिखित मिलता है: "अप्रत्याशित स्थिति में नेविगेशन संक्रमण को समाप्त करना। नेविगेशन बार सबव्यू ट्री दूषित हो सकता है।"
कर्ट

24

यह मानते हुए कि आप वास्तव में बटन को प्रोग्रामेटिक रूप से प्रेस नहीं करना चाहते हैं, लेकिन बस बटन दबाने के परिणाम को कॉपी करें, आपको नेविगेशन कंट्रोलर को वर्तमान व्यू कंट्रोलर को पॉप करने के लिए बताना चाहिए।

[self.navigationController popViewControllerAnimated:YES];

यह इसे स्टैक से हटा देगा, और आपको पिछले दृश्य नियंत्रक पर लौटा देगा।


21

स्विफ्ट 3.0

मूल दृश्य पर वापस जाएँ

self.navigationController?.popToRootViewController(animated: true)

पिछले दृश्य पर वापस जाएं

self.navigationController?.popViewController(animated: true)

स्विफ्ट 2.3

मूल दृश्य पर वापस जाएँ

self.navigationController?.popToRootViewControllerAnimated(true)

पिछले दृश्य पर वापस जाएं

self.navigationController?.popViewControllerAnimated(true)

7

आपको फोन करना चाहिए

popViewControllerAnimated:

जो के साथ दृश्य नियंत्रकों को जोड़ने के विपरीत है pushViewController:animated:


6
[self.navigationController popViewControllerAnimates:YES];

सबसे अच्छा विकल्प है, लेकिन अगर आप न तो एक ही व्यू कंट्रोलर क्लास पर हैं और न ही आपके बैक बटन के तरीके से पहले आपका डेलीगेट बदलता है, तो आप भी कर सकते हैं।

सबसे पहले आपको बैक बटन को परिभाषित करना होगा ---

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"anyTitleForBackButton" style: UIBarButtonItemStyleBordered target: nil action: @selector(backButtonTapped)];

[[self navigationItem] setBackBarButtonItem: newBackButton];

[newBackButton release];

और फिर backButtonTapped विधि में आप कॉल कर सकते हैं--

[self.navigationController pushViewController:desiredViewController animated:YES];
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.