IPhone पर नेविगेशन बार पर 'बैक' बटन कैसे छिपाएं?


315

मैंने अपने ऐप में विचारों के बीच स्विच करने के लिए एक नेविगेशन नियंत्रण जोड़ा। लेकिन कुछ विचारों में 'पिछला' (पिछला शीर्षक) बटन नहीं होना चाहिए। कैसे वापस बटन को छिपाने के बारे में कोई विचार?

जवाबों:


811

उद्देश्य सी:
self.navigationItem.hidesBackButton = YES;

स्विफ्ट:
navigationItem.hidesBackButton = true


@ user8170 नेविगेशन बार पर बाईं बारबटनटोनिटम को कैसे छिपाएं?
रॉकी

9
आप बैकबटन को छिपा नहीं सकते self.navigationItem.leftBarButtonItem = nil;। यदि आपने बाएंबारबुटोनिटेम को विस्फोटक रूप से सेट किया है तो आप इसका उपयोग कर सकते हैं self.navigationItem.leftBarButtonItem = nil;self.navigationItem.hidesBackButton = YES;बैक बटन
छिपाएगा

1
IOS 7 में, self.navigationItem.leftBarButtonItem = nil; जब व्यूडीडलड, व्यूविलेपेयर या व्यूडीडऐपियर से जारी किया जाता है तो बैक बटन को प्रभावित नहीं करता है। कोड की यह लाइन viewdidLoad के भीतर काम करती है: self.navigationItem.hidesBackButton = YES;
एलेक्स ज़ावाटोन

2
यकीन नहीं होता कि यह मदद करता है लेकिन 'सेल्फ' हमेशा एक व्यू कंट्रोलर होता है जिसे नेविगेशन कंट्रोलर के स्टैक के शीर्ष पर प्रस्तुत किया जा रहा है।
कुणाल बलानी

self.navigationItem.hidesBackButton = YES; मेरे लिए काम करता है देखने में
DidLoad

38

सबसे अच्छा तरीका यह है कि इन्हें मिलाया जाए, इसलिए यह बैक बटन को छुपा देगा भले ही आप इसे मैन्युअल रूप से सेट करें:

self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;

6
User716216 का जवाब देने के लिए, उन्होंने इसे अपने एक वाक्य स्पष्टीकरण में समझाया। कोड की दूसरी पंक्ति डिफ़ॉल्ट मामले के लिए काम करती है। यदि आपने स्वयं बनाया और जोड़ा है तो कोड की पहली पंक्ति काम करती है।
एलेक्स ज़ावाटोन

21

बेली कोड के साथ बैक बटन छिपाएं ...

[self.navigationItem setHidesBackButton:YES animated:YES];

या

[self.navigationItem setHidesBackButton:YES];

साथ ही अगर आपके पास कस्टम है UINavigationBarतो bellow code try करें

self.navigationItem.leftBarButtonItem = nil;

किसी भी वर्ग में जब आप उस कोड का उपयोग करते हैं तो उस वर्ग के नेवीगेशन बैक बटन पर छिपा होगा ...
पारस जोशी

6

में स्विफ्ट :

इसे कंट्रोलर में जोड़ें

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.setHidesBackButton(true, animated: false)
}


3

UIViewController के फ़ंक्शन देखेंDidLoad में कोड का उपयोग करें:

self.navigationItem.hidesBackButton = YES;

2

यह मत भूलो कि आपको इसे उस वस्तु पर कॉल करने की आवश्यकता है जिसमें नौसेना नियंत्रक है। उदाहरण के लिए, यदि आपके पास एक रुट व्यू कंट्रोलर के साथ टैब बार कंट्रोलर self.navigationItem.hidesBackButton = YESपर नेवी कंट्रोलर है, तो रूटव्यूकंट्रोलर पर कॉल करने से कुछ नहीं होगा। आपको वास्तव में कॉल करना होगाself.tabBarController.navigationItem.hidesBackButton = YES


2

यह मत भूलो कि अब हमारे पास इशारे को वापस करने के लिए स्लाइड है। आप शायद इसे भी हटाना चाहते हैं। यदि आवश्यक हो तो इसे फिर से सक्षम करने के लिए मत भूलना।

if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
    self.navigationItem.hidesBackButton = YES;
}

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}

1

इस कोड को अपने व्यू कंट्रोलर में जोड़ें

UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;

1

मेरे लिए उपरोक्त में से कोई भी काम नहीं कर रहा था, इसका कोई दृश्य प्रभाव नहीं था। मैं स्टोरीबोर्ड का उपयोग एक दृश्य के साथ कर रहा हूं जो नेविगेशन नियंत्रक में "एम्बेडेड" है।

मैं तब कोड स्तर पर अपना मेनू जोड़ देता हूं और किसी कारण से "बैकबटन" दिखाई देता है जब दृश्य पदानुक्रम को नेत्रहीन रूप से डीबग करता है, और मेरा मेनूइटेम आइकन अदृश्य "बैक बटन" के नीचे प्रदर्शित होता है।

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

मैंने अपने आइकन आकार का निरीक्षण किया और ठीक प्रतीत हुआ। उन्होंने ऐप्पल ह्यूमन इंटरफेस गाइडलाइन का हवाला देने के बाद पुष्टि की कि मेरे आइकॉन सही हैं। (1 पिक्सेल मेरे मामले में छोटे 24px 48px 72px)।

अजीब हिस्सा तो वास्तविक तय है ...

बारबटन आइटम जोड़ते समय इसे कम से कम एक चरित्र के साथ एक शीर्षक दें , मेरे मामले में एक अंतरिक्ष चरित्र।

आशा है कि यह किसी की मदद करता है।

//left menu - the title must have a space
UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " <--THE FIX 
                                                                    style:UIBarButtonItemStylePlain
                                                                  target:self
                                                                  action:@selector(showMenu)];
leftButtonItem.image = [UIImage imageNamed:@"ic_menu"];

[self.navigationItem setLeftBarButtonItem:leftButtonItem];

1

जब मैंने सेट किया तो यह मेरे लिए सभी मामलों में काम नहीं कर रहा था

self.navigationItem.hidesBackButton = YES;

जब मैं इसे व्यूकंट्रोलर के init में सेट करता हूं, तो व्यूप्लेयर या व्यूडीडलड में पूरी तरह से काम करता है।




0
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true

अगर आप इस कोड ब्लॉक का उपयोग करते हुए didLoad या loadView काम किया है, लेकिन पूरी तरह से काम नहीं किया है। यदि आप ध्यान से देखें तो आप देख सकते हैं कि जब आपका दृश्य लोड होता है तो बैक बटन छुपा होता है। अजीब है।

सही समाधान क्या है?

अपने लक्ष्य व्यू कॉन्ट्रॉलर्स नेविगेशन बार में घटक दृश्य (कमांड + शिफ्ट + एल) से बारबटन इटेम घटक जोड़ें ।

दाएँ पैनल से BarButtonItem सेट शीर्षक = "" चुनें

यहां छवि विवरण दर्ज करें

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