2012-02-14 14 views
5

मैं नवीनतम SDK और XCode 4.2बटन शीर्षक वापस बदल सकते हैं, लेकिन मैं नहीं छुपा सकते हैं यह

मैं एक UINavigationController का उपयोग के साथ एक iPhone आवेदन के विकास कर रहा हूँ, और एक नया ViewController मैं दिखाने के लिए AppDelegate.m पर ऐसा करते हैं: DocumentationViewController.m पर

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    { 
     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
     // Override point for customization after application launch. 
     if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
     { 
      self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil]; 
     } 
     else 
     { 
      self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil]; 
     } 
     self.viewController.title = NSLocalizedString(@"MAIN", nil); 

     navController = [[UINavigationController alloc] initWithRootViewController:self.viewController]; 
     navController.navigationBar.tintColor = [UIColor darkGrayColor]; 

     self.window.rootViewController = navController; 
     [self.window makeKeyAndVisible]; 
     return YES; 
    } 

    - (void) openDocumentation 
    { 
     if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
     { 
      docViewController = [[DocumentationViewController alloc] initWithNibName:@"DocumentationViewController_iPhone" bundle:nil]; 
     } 
     else 
     { 
      docViewController = [[DocumentationViewController alloc] initWithNibName:@"DocumentationViewControllerr_iPad" bundle:nil]; 
     } 
     docViewController.title = NSLocalizedString(@"DOCUMENTATION", nil); 
self.viewController.navigationItem.backBarButtonItem.title = @"Back"; 
     [navController pushViewController:docViewController animated:YES]; 
    } 

मैं यह कर:

- (void) viewWillAppear:(BOOL)animated 
{ 
    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" 
                    style:UIBarButtonItemStylePlain target:nil action:nil]; 
    self.navigationItem.backBarButtonItem = backButton; 
} 

लेकिन यह वापस बटन शीर्षक नहीं बदलता है।

मैं viewDidLoad है कि कोड के लिए कदम:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" 
                    style:UIBarButtonItemStylePlain target:nil action:nil]; 
    self.navigationItem.backBarButtonItem = backButton; 
} 

- (void) viewWillAppear:(BOOL)animated 
{ 

} 

लेकिन फिर भी काम नहीं करता।

और यह या तो काम नहीं करता है:

- (void) viewWillAppear:(BOOL)animated 
{ 
    self.navigationItem.backBarButtonItem.title = @"Back"; 
} 

लेकिन अगर मैं ऐसा करते हैं, अगर मैं वापस बटन उपयोग नहीं कर सकते परीक्षण करने के लिए:

- (void) viewWillAppear:(BOOL)animated 
{ 
    self.navigationItem.hidesBackButton = YES; 
} 

यह काम करता है !! और वापस बटन छुपाता है।

मैं क्या गलत कर रहा हूं?

उत्तर

19

UINavigationViewController द्वारा दिखाया गया बैक बटन शीर्षक स्टैक में शीर्ष दृश्य नियंत्रक के navigationItem.backBarButtonItem.title पर निर्भर नहीं है। यह दूसरे शीर्ष पर navigationItem.backBarButtonItem.title के नियंत्रक के मान पर निर्भर करता है।

तो आपको अपने DocumentViewController को दबाते समय जो भी दृश्य नियंत्रक दिखा रहा है, उसके लिए आपको navigationItem.backBarButtonItem.title सेट करने की आवश्यकता है।

+0

ठीक है, और अब: मैं इसे कैसे बदल सकता हूं? – VansFannel

+0

अद्यतन उत्तर – yuji

+0

मुझे खेद है, लेकिन मैं आपको समझ में नहीं आता। मैंने AppDelegate openDocumentation विधि के अंत में कोड की इस पंक्ति को जोड़ा है: 'navController.navigationItem.backBarButtonItem.title = @" Back ";'। लेकिन, यह अभी भी बैक टेक्स्ट नहीं दिखाता है। – VansFannel

1

बस स्टोरीबोर्ड में जोड़ने के लिए या नोक अपने कस्टम बटन (इस नेविगेशन बटन का स्थान ले लेगा) फ़ाइल और इसके लिए एक वापस कार्रवाई जोड़ें:

- (IBAction)back:(id)sender { 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

मेरे लिए यह मेरे बैक बटन को कस्टमाइज़ करने की अनुमति देता है।

2

जब आप UIViewController का बैकबर्टनइटम शीर्षक सेट करते हैं, तो आप वास्तव में बैक बटन के लिए शीर्षक सेट कर रहे हैं यदि यह UIViewController UINavigationController स्टैक में दूसरा नियंत्रक है।

self.navigationItem.backBarButtonItem.title = @"Custom Title"; 

तो, अगर ऊपर दृश्य नियंत्रक नव नियंत्रक में पहले से ही है और बाद में नव नियंत्रक में एक बच्चे को देखने के लिए नियंत्रक धक्का, वापस बटन शीर्षक "कस्टम शीर्षक" हो जाएगा।

+1

अफसोस की बात है, काम नहीं करता है – Lachtan

0

वास्तव में आप सिर्फ एक चाल के साथ ऐसा कर सकते हैं:

अवहेलना UINavigationBar वर्ग और कोड के इस पंक्ति जोड़ें:

- (void)layoutSubviews{ 
    self.backItem.title = @""; 
    [super layoutSubviews]; 
} 

तो इस कस्टम UINavigationBar वर्ग के साथ अपने UINavigationController प्रारंभ .. आदि

UINavigationController * navController = [[UINavigationController alloc] initWithNavigationBarClass:[CBCNavigationBar class] toolbarClass:nil]

आशा इस मदद करता है

संबंधित मुद्दे