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

标签 ios cocoa-touch uinavigationcontroller

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

我使用 UINavigationController,并在 AppDelegate.m 上显示新的 ViewController:

    - (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];
    }

DocumentationViewController.m 上,我这样做:

- (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;
}

有效!!并隐藏后退按钮。

我做错了什么?

最佳答案

UINavigationViewController 显示的后退按钮标题不依赖于堆栈中最顶层 View Controller 的 navigationItem.backBarButtonItem.title。它取决于 第二个最顶层 View Controller 的 navigationItem.backBarButtonItem.title 值。

因此,当您推送 DocumentViewController 时,您需要为显示的任何 View Controller 设置 navigationItem.backBarButtonItem.title

关于ios - 无法更改后退按钮标题,但我可以隐藏它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9276002/

相关文章:

iphone - 可以将 WiFi 设置从 iOS 设备传递到 ExternalAccessory 对象吗?

ios - Swift 与解析 : Error when adding push notification support to appDelegate

ios - 检查 NSDate 是否为星期一/星期二/等

ios - 从屏幕截图中删除状态栏条

iphone - 在导航 Controller 中添加选项卡栏 Controller 时隐藏后退按钮

javascript - 当用户进入当前网页时,html 5 视频以全屏模式自动打开

ios - RxSwift : How to populate the data in collection view cell inside the table view using ViewModel?

ios - IBOutlet 对代码没有反应

ios - iOS 导航 Controller 代码的正确位置?

ios - 带有嵌入式 UITabBarController 的损坏的 UINavigationController