UINavigationController
पर बैक बटन दबाए जाने पर मैं एक विधि कैसे कॉल कर सकता हूं। पिछले दृश्य प्रदर्शित होने से पहले मुझे एक विधि कॉल करने में सक्षम होना चाहिए। क्या यह संभव है? यदि ऐसा है तो कृपया कोई यह सलाह दे सकता है कि यह कैसे करें?UINavigationController पर बैक बटन दबाए जाने पर विधि को कैसे कॉल करें? (आईफोन)
उत्तर
व्यूविल्ल डिस्प्लेयर के लिए कार्यान्वयन जोड़ने का एक तेज़ समाधान है: विधि। जैसे ही व्यू कंट्रोलर बैक बटन दमन के जवाब में गायब हो जाएगा।
- (void)viewWillDisappear:(BOOL)animated {
//...
//make you stuff here
//...
}
एक और समाधान बैक बटन पर एक कस्टम उत्तरदाता जोड़ना है। आप इस प्रकार अपने ViewController के init विधि को संशोधित कर सकते हैं:
- (id)init {
if (self = [super init]) {
//other your stuff goes here
//...
//here we customize the target and action for the backBarButtonItem
//every navigationController has one of this item automatically configured to pop back
self.navigationItem.backBarButtonItem.target = self;
self.navigationItem.backBarButtonItem.action = @selector(backButtonDidPressed:);
}
return self;
}
और फिर आप निम्नलिखित के रूप में एक चयनकर्ता विधि का उपयोग कर सकते हैं। सही ढंग से viewController को खारिज करना सुनिश्चित करें, अन्यथा आपका नेविगेशन नियंत्रक वांछित के रूप में पॉप नहीं होगा।
- (void)backButtonDidPressed:(id)aResponder {
//do your stuff
//but don't forget to dismiss the viewcontroller
[self.navigationController popViewControllerAnimated:TRUE];
}
कोडकंट्रोलर में कोड डालने का सबसे आसान तरीका होगा जो बैक बटन दबाए जाने पर प्रस्तुत किया जाएगा। आप उपयोग कर सकते हैं viewWillAppear
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
//Your code here
}
ध्यान दें कि यह भी जब दृश्य किसी अन्य कारण से प्रस्तुत किया है निष्पादित किया जाएगा, ताकि आप यह तो होना ही केवल जब वापस बटन दबाया जाता है आप प्रतिनिधि उपयोग करने के लिए चाहते हैं: UINavigationControllerDelegate
कि विधि है कि कुलपति सब पर प्रकट होता है जब बुलाया जाएगा, बस जरूरी नहीं कि सिर्फ इसे वापस – Colin
के लिए जा रहा @Colin यह सही है, यह सही व्यवहार वह चाहता है पर निर्भर करता है कि वह का एक परिणाम के रूप में प्रतिनिधि का उपयोग कर सकते हैं, अगर वह केवल बैक बटन दबाए जाने पर ही चाहता है। –
UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 52, 31)];
[backButton setBackgroundImage:[UIImage imageNamed:@"BackButton.png"] forState:UIControlStateNormal];
//[backButton setTitle:@"CLOSE" forState:UIControlStateNormal];
[backButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[backButton.titleLabel setFont:[UIFont boldSystemFontOfSize:14.0f]];
[backButton addTarget:self action:@selector(tappedBackButton:) forControlEvents:UIControlStateHighlighted];
UIBarButtonItem* item = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = item;
[item release];
एक कस्टम बैक बटन बनाएँ और है कि चयनकर्ता एक विधि है कि आप चाहते हैं फोन इस्तेमाल करते हैं। और [self.navigationController popViewControllerAnimated: TRUE] का भी उपयोग करें;
- (void)tappedBackButton:(id)button
{
// call your method here
[self.navigationController popViewControllerAnimated:TRUE];
}
ध्यान दें कि जब आप बैक बटन को इस तरह से प्रतिस्थापित करते हैं, तो आप आईओएस 7 में पेश किए गए बाएं किनारे से "मूल दृश्य नियंत्रक पर वापस जाने के लिए स्वाइप करें" सुविधा खो देते हैं और यह उपयोगी है आईफोन 6 और 6+ –
पर शॉर्टकट यह self.navigationItem.rightBarButtonItem के साथ काम नहीं कर रहा है ... कृपया एक और समाधान दें – Vidhi
मुझे लगता है कि मैं एक "क्लीन" तरीका है कि ऐसा करने के लिए मिला:
सबसे पहले,
@interface MyViewController() <UINavigationControllerDelegate>
फिर UINavigationControllerDelegate प्रोटोकॉल का पालन करने के प्रतिनिधि के रूप में इसे परिभाषित के रूप में अपने दृश्य नियंत्रक सेट
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
// Set this View Controller as the navigation controller delegate
self.navigationController.delegate = self;
}
अंतिम, इस विधि का उपयोग UINavigationControllerDeleg से करें खा लिया प्रोटोकॉल:
#pragma mark - Navigation controller delegate
- (void)willMoveToParentViewController:(UIViewController *)parent
{
// If there is no parent, then it means that the view controller has been removed from the stack, which happens when the back button has been pressed
if (!parent) {
NSLog(@"Back button pressed");
// it can be useful to store this into a BOOL property
self.backButtonPressed = YES;
}
}
- 1. बैक बटन दबाए जाने पर ऐप को कैसे सहेजें
- 2. बैक बटन दबाए जाने पर मैं गतिविधि को कैसे मारूं?
- 3. बटन दबाए जाने पर फ़ंक्शन को कॉल करें - pyqt
- 4. बटन दबाए जाने पर थ्रेड कैसे शुरू करें और फिर दबाए जाने पर इसे रोकें?
- 5. बटन दबाए जाने पर कई कमांड हैं
- 6. आईफोन एसडीके - हार्डवेयर बटन दबाए जाने पर वॉल्यूम सूचक दृश्य को कैसे अक्षम करें?
- 7. बटन दबाए जाने पर बार-बार कुछ कैसे करें?
- 8. बटन दबाए जाने पर तत्व को फोकस कैसे न खोएं?
- 9. एंटर दबाए जाने पर फॉर्म सबमिट करें
- 10. चालू होने पर वापस बटन दबाए जाने पर कॉल नहीं किया जाता है?
- 11. बैक बटन दबाए जाने पर कस्टम पृष्ठों पर डेटा बनाए रखें
- 12. jQuery - बटन दबाए जाने पर काउंटर के मूल्य को बढ़ाएं
- 13. आईफोन पर नेविगेशन बार पर 'बैक' बटन कैसे छिपाना है?
- 14. एंड्रॉइड - बैक बटन दबाए जाने पर AsyncTask को रोकें और पिछली गतिविधि
- 15. वापस बटन दबाए जाने पर राज्य को सहेजें
- 16. लंबे समय तक बटन दबाए जाने पर एक क्रिया दोहराएं
- 17. इनपुट प्रकार बटन दबाए जाने पर रंग बदलता है?
- 18. एंड्रॉइड - बटन दबाए जाने पर लेआउट में टेक्स्टव्यू जोड़ें
- 19. माउस दबाए जाने पर जावास्क्रिप्ट दोहराएं
- 20. आईफोन घुमाए जाने पर 90 डिग्री घुमाए जाने पर फ़ंक्शन को ट्रिगर कैसे करें?
- 21. F5 या रीफ्रेश बटन दबाए जाने पर पृष्ठ के केवल एक हिस्से को रीफ्रेश करें
- 22. एंटर कुंजी दबाए जाने पर क्लिक करें पर क्लिक करें C#
- 23. रेल: बैक बटन दबाए जाने के बाद डुप्लिकेट आवेषण को रोकें और फिर से सहेजें
- 24. दबाए गए बटन पर विभिन्न स्टाइल लागू करें
- 25. क्लिक किए जाने पर बटन को कैसे अक्षम करें
- 26. F5 दबाए जाने पर ऑटो-बिल्ड सक्षम करें और स्रोत
- 27. आईफोन: UINavigationController के शीर्ष पर अजीब स्थान
- 28. पुशस्टेट के बाद, दबाए जाने पर पृष्ठ को फिर से लोड कैसे करें?
- 29. "हो गया/रिटर्न" बटन दबाए जाने पर टेक्स्टबॉक्स कीबोर्ड को कैसे छिपाना है Xcode 4.2
- 30. यूआईएसएआर बार 'सर्च "बटन दबाए जाने पर कीबोर्ड को कैसे खारिज कर दिया जाए?
दोनों के बीच एक अंतर यह है कि पहले समाधान (यानी 'viewWillDisappear') को नेविगेशन स्टैक के माध्यम से वापस या आगे जाने पर बुलाया जाता है। दूसरा समाधान सिर्फ वापस जाने के लिए है। – Matthew
यह आम तौर पर काम नहीं करेगा क्योंकि आप पाएंगे कि बैकबटन इटिम शून्य है जब तक कि आप इसे स्पष्ट रूप से एक बटन असाइन नहीं करते। वैसे भी, मेरे अनुभव में, बाएं बार्टबटन इटिम और बैकबर्टनटिम दोनों शून्य थे। – Diziet
यह –