2011-08-30 24 views
19

मैं वर्तमान में एक टेबलसेल स्पर्श से लोड किए गए सबव्यूव के बैक बटन टेक्स्ट को बदलने का प्रयास कर रहा हूं। हालांकि जिस तरह से मैं इसे लागू करने की कोशिश कर रहा हूं, वैसे भी यह बैक बटन में माता-पिता का शीर्षक दिखाता है।uinavigationbar बैक बटन टेक्स्ट को कैसे बदलें

मैं एक नया मान लेकिन इसकी काम नहीं कर रहा तो

UIBarButtonItem *myBarButtonItem = [[UIBarButtonItem alloc] init]; 
myBarButtonItem.title = @"Back"; 
self.navigationItem.backBarButtonItem = myBarButtonItem; 
[myBarButtonItem release]; 

तरह viewDidLoad विधि के अंदर वापस बटन में लोड करने की कोशिश कर रहा हूँ।

+0

क्या यह मुख्य धागे पर किया जा रहा है? –

+0

ईमानदार होने के लिए मुझे यकीन नहीं है, मैं आईओएस में धागे के बारे में निश्चित नहीं हूं .. मैं अपने ज्ञान के धागे नहीं बना रहा हूं अगर इससे आपको प्रश्न का उत्तर देने में मदद मिलती है। –

+1

डुप्लिकेट प्रश्न। यह उत्तर देखें: http://stackoverflow.com/a/4291832/1627732 – Yoga

उत्तर

0

आपका कोड अभी तक ठीक दिखता है।

इस कोड

[super viewDidLoad]; 

बयान (गलत) से पहले मार डाला है या उसके बाद (अच्छा)?

+0

मैं इसे बाद में निष्पादित कर रहा था। –

1

यह जिस तरह से आप करने की कोशिश कर रहे हैं, वह काम नहीं करेगा। नेविगेशन बटन में हमेशा पिछले दृश्य का शीर्षक होगा। हालांकि आप क्या कर सकते हैं - नए को धक्का देने से पहले पहले दृश्य का शीर्षक बदलें। यही एकमात्र समस्या है जिसे मैं एक ही समस्या को हल करने के लिए पा सकता था।

+1

और फिर जब आप वापस जाएं तो आपको अपना शीर्षक वापस बदलना होगा .. यह एक भयानक समाधान है यदि इसकी एकमात्र संभावना है .. उंगलियों को पार किया गया एक और तरीका है। –

9

ठीक है, इसे समझ लिया गया है, मैंने इस कोड को मूल दृश्य तालिका में पोस्ट किया है दृश्य: didSelectRowAtIndexPath: विधि। इस प्रकार मेरा एक से अधिक टेबलकल्स देखता है जो उपयोगकर्ता चुन सकते हैं। उम्मीद है की यह मदद करेगा।

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // Navigation logic may go here. Create and push another view controller. 
    if (indexPath.section == 0) { //--- picks (first) section 

    ChildViewController *childViewController = [[ChildViewController alloc] initWithNibName:@"ChildViewController" bundle:nil]; 
    // ... 
    // Pass the selected object to the new view controller. 
    [self.navigationController pushViewController:childViewController animated:YES]; 
    //--- this sets the back button to "Back" every time you load the child view. 
    self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style: UIBarButtonItemStyleBordered target:nil action:nil] autorelease]; 

     if(indexPath.row == 0) { //--- picks row 
      childViewController.title = @"Bike"; 
     } 
     if(indexPath.row == 1) { 
      childViewController.title = @"Model"; 
     } 
     [vehicleSearchResponseTableViewController release]; 
    } 


} 
+0

यदि आपके पास स्टैक पर एक से अधिक व्यू कंट्रोलर हैं तो यह एकमात्र समाधान है जो वास्तव में काम करता है। धन्यवाद। – Winston

-1

This article आपको जो चाहिए वह करना चाहिए।

लेखक से:

आप ऊपर देख सकते हैं, तुम सब करने की जरूरत है नियंत्रक के leftBarButtonItem सेट कर दिया जाता है और इसे वापस बटन छुपा देगा। चयनकर्ता हैंडलबैक अब बैक इवेंट को संभालता है और फिर आपको UINavigationController के स्टैक से दृश्य नियंत्रक को मैन्युअल रूप से पॉप करने की आवश्यकता होती है। आप पेज को छोड़ने से भी अवरुद्ध कर सकते हैं, यहां तक ​​कि अपना कोई भी कोड लागू कर सकते हैं।

30

आपको पिछले दृश्य से self.navigationItem.backBarButtonItem बदलने की जरूरत है, वर्तमान दृश्य नहीं (मुझे पता है, यह थोड़ा अजीब लगता है)। उदाहरण के लिए, अपने तालिका दृश्य में आप निम्न कर सकते हैं:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self setTitle:@"My title"]; 
    UIBarButtonItem *boton = [[UIBarButtonItem alloc] initWithTitle:@"Custom back button text" style:UIBarButtonItemStyleBordered target:self action:@selector(mySelector:)]; 
    self.navigationItem.backBarButtonItem = boton; 
    [boton release]; 
} 
+0

नहीं, अगर वह इसे स्पेनिश में लिख रहा था;) – Steven07

24

यह जहां प्रलेखन इतना स्पष्ट नहीं है जब तक आप पढ़ लिया है और फिर से पढ़ सकते हैं और प्रत्येक सेटिंग के साथ चारों ओर खेलने है।
डिफ़ॉल्ट का शीर्षक बदलने के लिए वापस बटन viewDidLoad()

self.navigationController.navigationBar.topItem.title = @"Your Label"; 

में इस लाइन को जोड़ने यदि आप चाहते हैं बटन अदृश्य होने के लिए - तो @"" रिक्त स्ट्रिंग पर मूल्य निर्धारित किया है।

+2

यह ऐसा हैक है लेकिन यह काम करता है यदि आप पिछली नीब के शीर्षक को फिर से रीसेट करते हैं तो आप इसे वापस लेते हैं –

+0

डाउनवॉटेड। अन्य विकल्पों को ध्यान में रखते हुए इसे व्यवहार्य समाधान नहीं माना जाना चाहिए। अगर हम इस बात पर नियंत्रण की कमी का सामना कर रहे थे कि बैक बटन कैसे व्यवहार करता है तो यह एक स्वीकार्य हैक होगा, लेकिन एक हैक अभी भी होगा। –

+0

TopItem हमेशा मेरे लिए एक मामले में बैकबटन नहीं है TopItem दृश्य शीर्षक –

-3

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

[self.navigationItem.backBarButtonItem setTitle:@"Your Custom Title"]; 

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

+0

आपकी व्याख्या के अनुसार, क्या आपका मतलब नहीं है [self.navigationItem setTitle: @ "..."] या यहां तक ​​कि केवल 'self.title = @ "..." "? –

+1

डिफॉल्ट self.navigationItem.backBarButtonItem शून्य है ताकि आप इसका उपयोग करके बैक बटन अनुकरण नहीं बदल सकें। – Peter

2

बैक बटन नाम बदलने के लिए एक्सकोड 5 के साथ सबसे अच्छा तरीका व्यू कंट्रोलर पर नेविगेशन आइटम के आईबी में बैक बटन फ़ील्ड को संपादित करना है, जिसमें बैक बटन वापस आ जाएगा। उदाहरण के लिए, यदि आपके पास टेबलव्यू कंट्रोलर की एक सूची है जो एक विस्तार स्क्रीन पर जाती है, तो विवरण स्क्रीन पर वापस बटन बटन बदलने के लिए तालिका दृश्य दृश्य नियंत्रक के नेविगेशन आइटम (आईबी में) सूची में बैक बटन बदलें।

+0

यह वही तरीका है जिसे आप करना चाहते हैं। धन्यवाद पीटर। – JVillella

0

viewDidLoad

self.navigationController! बाद .navigationBar.backItem? .title = "वापस"

0

मेरे सुझाव माता-पिता पृष्ठ का शीर्षक पट्टी के लिए एक अलग लेबल जोड़ने के लिए किया गया था। मेरे लिए ठीक काम किया।

let titleLabel = UILabel(frame: CGRect(x: (view.frame.width * (3/8)), y: 0, width: (view.frame.width * 0.25), height:30)) 
     titleLabel.text = "Title" 
     titleLabel.textAlignment = .center 
     titleLabel.textColor = UIColor.white 
     titleLabel.font = UIFont.systemFont(ofSize: 20) 
     navigationItem.titleView = titleLabel 
संबंधित मुद्दे