बैक बटन पर टेक्स्ट कैसे बदलें


90

डिफ़ॉल्ट रूप से पीछे का बटन एक पाठ के रूप में उपयोग करता है, यह एक दृश्य-केंद्र का शीर्षक है। क्या मैं किसी व्यू कंट्रोलर का शीर्षक बदले बिना बैक बटन पर टेक्स्ट बदल सकता हूं? मुझे इसकी आवश्यकता है क्योंकि मेरे पास एक दृश्य नियंत्रक है जो शीर्षक प्रदर्शित करने के लिए बहुत लंबा है और इस मामले में मैं बैक बटन के लिए कैप्शन के रूप में सिर्फ "बैक" प्रदर्शित करना चाहूंगा।

मैंने निम्नलिखित कोशिश की जो काम नहीं किया:

self.navigationItem.leftBarButtonItem.title = @"Back";

धन्यवाद।


3
ध्यान रखें कि बैक बटन के पास एक कारण के लिए शीर्षक हैं। शीर्षक को "बैक" में बदलकर आप उस उपयोगकर्ता की जानकारी लूट रहे हैं, जो बटन वापस जाता है।
साइमन

जवाबों:


167

प्रयत्न

self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];

मैं देख कर कि पाया backBarButtonItem के लिए एप्पल के डॉक्स में डॉक्स UINavigationItem


1
क्षमा करें, मेरे पास अभी इस परीक्षण का मौका नहीं है, लेकिन क्या यह अंतर्निहित बैक बटन के बाएं-नुकीले आकार को लागू करता है, या क्या यह UIBarButtonItem की डिफ़ॉल्ट आयताकार आकृति रखता है?
मार्को

मुझे वास्तव में यकीन नहीं है। मुझे लगता है कि बैकबटन संपत्ति सेट करने के बाद से यह केवल बैक बटन आकार को स्वचालित रूप से रखेगा, लेकिन यह पता लगाने के लिए आपको इसका परीक्षण करना होगा। मैं भी उत्सुक हूँ।
मार्क डब्ल्यू

2
हाँ, यह काम किया! यह हां शीर्षक बदलता है, और हां, आकृति को बचाता है। मदद के लिए धन्यवाद।
इल्या सुजलडनिट्सकी

1
नोट: पिछला बटन दो बार बनाए रखा जाता है [आवंटन से 1x, संपत्ति के रख-रखाव से 1x]। हालाँकि, यदि आप बैक बटन नहीं बदलते हैं, तो यह प्रभावी रूप से हानिरहित है।
केल्विन

29
नीचे मार्को की टिप्पणी देखें - आपको इसे नियंत्रक पर कॉल करना चाहिए जो कुछ नया धक्का देने वाला है, न कि नियंत्रक को धक्का देने पर।
बिल

97

मार्क डब्ल्यू के दृष्टिकोण ने बहुत अच्छा काम किया जब मैंने यह पता लगाया कि कौन सा नियंत्रक इसे लागू करता है: एक को फिर से शीर्षक दिया जा रहा है, न कि शीर्ष पर। तो अगर यह नेविगेशन स्टैक है:

(bottom)  ControllerA -> ControllerB  (top)

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

तो यह self.titleदूसरे के बायें / दायें-बार-बटन की तरह नहीं है।


13
यह एक बहुत महत्वपूर्ण विवरण है।
बिल

4
wcochran, यह स्टोरीबोर्ड के साथ काम करता है, बस सुनिश्चित करें कि आपने मूल नियंत्रक का बैक बटन सेट किया है। इसलिए यदि आपके पास कंट्रोलर ए है जो कंट्रोलर बी में बैक बटन के लिए टेक्स्ट को कस्टमाइज्ड करने के लिए कंट्रोलर बी (स्टोरीबोर्ड सेगमेंट के जरिए) को इंगित करता है, तो आपको स्टोरीबोर्ड एडिटर में कंट्रोलर ए के लिए "बैक बटन" प्रॉपर्टी सेट करनी होगी।
बाधित

धन्यवाद मार्को। इस प्रश्न के बारे में मुझे जो लगा वह यह था कि हर कोई (और सही उत्तर देने के लिए) उत्तर देने की कोशिश कर रहा है, लेकिन उस प्रश्न के लिए नहीं जो पूछा जा रहा है। आप मूल रूप से नाखून को सिर में और सही ढंग से मारते हैं। उसके लिए धन्यवाद!
theiOSguy

महत्वपूर्ण विवरण के लिए +1। जब तक आप इस उत्तर को नहीं समझेंगे, तब तक उपरोक्त उत्तर आपके लिए काम नहीं करेगा।
baptzmoffire

आप सही हैं, नए मैकबुक वन पर कीबोर्ड का उपयोग करने के लिए थोड़ा मुश्किल है।
मेसन जी। ज़िविती

48

आप इसे स्टोरीबोर्ड में कर सकते हैं। वह व्यू कंट्रोलर ढूंढें जिसे आप वापस जाना चाहते हैं (लंबे शीर्षक के साथ एक), यह नेविगेशन आइटम चुनें, और गुण निरीक्षक खोलें (Alt + Cmd + 4), कस्टम बैक बटन शीर्षक डालें।

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


यह वही था जो मुझे चाहिए था क्योंकि मैं चाहता था कि पिछले नियंत्रक के नव शीर्षकों के बजाय पाठ "बैक" के सभी बैक बटन हों।
डेव

8
बस ध्यान दें, बैक बटन टेक्स्ट उस दृश्य पर सेट है जिसे अगले नियंत्रक से धक्का दिया गया था, न कि उस दृश्य नियंत्रक से जिसे आपने वर्तमान में दिखाया है।
दरबियो

यह एक अच्छा सरल उपाय है, लेकिन कृपया अपने सभी बैक बटन का नाम "बैक" में न रखें, यह ऐप्पल के एचआईजी के खिलाफ जाता है और बैक बटन के उद्देश्य के हिस्से को हरा देता है। :(
शमूएल गुडविन

बढ़िया काम किया। बस स्टोरीबोर्ड फ़ाइल को सहेजना सुनिश्चित करें। मेरा पहला प्रयास काम नहीं आया क्योंकि मैंने ध्यान नहीं दिया कि स्टोरीबोर्ड को बचाया नहीं गया था! और हां, आप जिस व्यू कंट्रोलर से आ रहे हैं, उस पर BACK बटन को बदल दें!
एरिकावास ने

बहुत अच्छी तरह से, लेकिन क्या होगा अगर मैं बिना किसी पाठ के सिर्फ तीर छोड़ना चाहता हूं? :)
Iurii वासिलेंको

40

धन्यवाद मार्को ... जिसने मेरी मदद की ...

मैंने जो किया था यह रहा।

यदि आप अलग-अलग विचारों पर नेविगेट करने के लिए एक तालिका दृश्य का उपयोग कर रहे हैं ... कोड डालें:

self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];

अपनी didSelectRowAtIndexPathविधि में ... पहले नियंत्रक के ... नियंत्रक ए।

जब आप कंट्रोलर बी पर जाते हैं तो बटन पर "बैक" शीर्षक होगा।


1
थैंक्यू डियर @Ben। मुझे इसी की तो तलाश थी :)।
अर्सलान

12

बैक बटन अपने टेक्स्ट को पैरेंट व्यू कंट्रोलर के शीर्षक से खींचता है।

पैरेंट व्यू कंट्रोलर (जब आप बैक बटन पर टैप करते हैं तो दिखाई देने वाला कंट्रोलर), बैक बटन पर वांछित टेक्स्ट के रूप में अपना शीर्षक सेट करता है।

उदाहरण के लिए, मान लें कि हमारे पास एक RootViewControllerवर्ग है। जब हम इसके तालिका दृश्य में एक सेल पर क्लिक करते हैं, तो हम एक उदाहरण को आगे बढ़ाते हैं SecondViewController। हम SecondViewControllerउदाहरण के लिए "होम" का बैक बटन चाहते हैं ।

RootViewController.m की viewDidLoadविधि में :

self.title = @"Home";

SecondViewController.m की viewDidLoadविधि में :

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];    

यदि आप चाहते हैं कि आपका बैक बटन पढ़ने के लिए, "बैक", पैरेंट व्यू कंट्रोलर का शीर्षक सेट करें @"Back";


10

यह मेरे लिए बेहतर काम है। प्रयत्न :

 self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] 
initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];

1
महान जवाब सही काम किया। इसे चिह्नित किया जाना चाहिए।
मुहम्मद रिजवान

9

यदि आप स्टोरीबोर्ड का उपयोग कर रहे हैं:

  1. ओपन स्टोरीबोर्ड
  2. दस्तावेज़ की रूपरेखा विंडो में ViewController खोजें जिस पर आप वापस लौटना चाहते हैं
  3. उस ViewController के नेविगेशन आइटम पर क्लिक करें
  4. विशेषताएँ खोजकर्ता में आपके कस्टम टाइल पर वापस बटन मान बदलें

यही है, आनंद लें ...


5

और मोनोक्च में निम्नलिखित कार्यों (मूल नियंत्रक के ViewDidLoad में):

NavigationItem.BackBarButtonItem = new UIBarButtonItem( "Back", UIBarButtonItemStyle.Plain, null);

3
[self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc]
  initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil]];

इसने मेरे लिए काम किया।


3

अपने पैरेंट व्यू कंट्रोलर में, जब लोड देखें तो बैक बटन सेट करें:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Do any additional setup after loading the view.
    self.navigationItem.backBarButtonItem = 
       [[UIBarButtonItem alloc] initWithTitle:@"title" 
                                        style:UIBarButtonItemStylePlain 
                                       target:nil 
                                       action:nil];

}

ध्यान दें कि हमें शामिल करने की आवश्यकता नहीं है autorelease नवीनतम iOS संस्करण के साथ अंत ।

उम्मीद है की यह मदद करेगा!


1

[self.navigationController.navigationBar.backItem setTitle:@"back"];

इससे मेरा काम बनता है। आप "बैक" को किसी और चीज़ से बदल सकते हैं।


कोड के साथ उत्तर देते समय, हमेशा समझाएं कि प्रदान किए गए कोड में क्या समस्या थी और आपका कोड समस्या को कैसे हल करता है।
लुकास नुथ

1

यह एक मेरे लिए काम करता है अगर आप एक शीर्षक नहीं रखना चाहते हैं!

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];

1
self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];

0

मुझे अंततः पता था कि ये जवाब मेरे लिए पहले क्यों नहीं आए। मैंने स्टोरीबोर्ड में शीर्षक सेट किया। जब मैंने कोड को शीर्षक सेट किया। यह काम करता हैं!

self.navigationItem.title = @"Main Menu";
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStyleBordered target:nil action:nil];
[[self navigationItem] setBackBarButtonItem:backButton];

भविष्य में आप इस तरह की पोस्ट बनाना चाह सकते हैं कि उत्तर पर टिप्पणी के रूप में आप के लिए काम नहीं किया।
कीथ स्माइली

0

मेरा समाधान शीर्षक सेट करने के लिए था जब व्यू कंट्रोलर को नेविगेशन स्टैक पर धकेल दिया जाता है और पुश वीसी बंद होने से पहले प्रतिनिधि विधि के उपयोग से इसे रीसेट कर दिया जाता है:

इसलिए मैंने कॉल व्यू कंट्रोलर में शीर्षक परिवर्तन को रखा जब मैंने अन्य व्यू कंट्रोलर को धक्का दिया:

self.pushedVC = [self.storyboard instantiateViewControllerWithIdentifier:@"pushedVCIdentifier"];
self.pushedVC.delegate = self;   
[self.navigationController pushViewController:self.pushedVC animated:YES];
self.title = @"Back";

और प्रतिनिधि कॉलबैक फ़ंक्शन में (जिसे मैं दृश्य में देखता हूं डिलिसेपियर):

-(void)pushedVCWillClose:(PushedVC *)sender
{
    self.title = @"Previous Title";
}

0

यदि आप न केवल बैक बटन के पाठ को बदलना चाहते हैं और मूल बाएं-तीर के आकार को बनाए रखना चाहते हैं, बल्कि उपयोगकर्ता द्वारा बैक बटन पर क्लिक करने पर भी कुछ करना है, तो मैं आपको सलाह देता हूं कि मेरे " CustomNavigationController " के चारों ओर एक नज़र डालें ।


0

// आप पिछले दृश्य नियंत्रक में शीर्षक सेट करके इसे प्राप्त कर सकते हैं जैसा कि नीचे दिखाया गया है

override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        //Set Title for this view
        self.navigationItem.title = "My Title"

}

override func viewWillDisappear(animated: Bool) {
        super.viewWillAppear(animated)
        //Set Title for back button in next view 
        self.navigationItem.title = "Back"
}

0

बैक बटन शीर्षक बदलने के लिए, नीचे दिए गए कोड को देखें

InformationVC *infoController=[[InformationVC alloc]init];[self.navigationController infoController animated:YES];

//Below code changed back button title on InformationVC page.
UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithTitle:@"Information" style: UIBarButtonItemStylePlain target: nil action: nil];
self.navigationItem.backBarButtonItem = backBarButton;`enter code here`

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