无法更改后退按钮标题,但我可以隐藏它

Van*_*nel 5 cocoa-touch uinavigationcontroller ios

我正在开发一个带有最新SDKXCode 4.2iPhone应用程序

我使用UINavigationController,并显示一个新的ViewController我在AppDelegate.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];
    }
Run Code Online (Sandbox Code Playgroud)

DocumentationViewController.m我这样做:

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

但它不会改变按钮标题.

我将该代码移动到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
{

}
Run Code Online (Sandbox Code Playgroud)

但仍然行不通.

这也不起作用:

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

但是,如果我这样做,测试我是否无法访问后退按钮:

- (void) viewWillAppear:(BOOL)animated
{
    self.navigationItem.hidesBackButton = YES;
}
Run Code Online (Sandbox Code Playgroud)

有用!!并隐藏了按钮.

我究竟做错了什么?

yuj*_*uji 20

a所示的后退按钮标题UINavigationViewController不依赖于navigationItem.backBarButtonItem.title堆栈中最顶层的视图控制器.它取决于第二个最顶层视图控制器的值navigationItem.backBarButtonItem.title.

因此,您需要设置navigationItem.backBarButtonItem.title控制器在推送时显示的任何视图DocumentViewController.