无法设置视图控制器的后栏按钮项的标题

时间:2012-11-29 21:27:35

标签: objective-c uinavigationcontroller uibarbuttonitem xcode4.5 osx-mountain-lion

我正在使用具有导航控制器的应用程序进行自我训练,用户可以在两个视图控制器之间切换 根视图控制器类称为ViewController,这就是我在我的应用程序委托中以编程方式添加导航控制器的方式:

self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
navController= [[UINavigationController alloc]initWithRootViewController: viewController];
self.window.rootViewController= navController;

这是navController:

@property (strong, nonatomic) UINavigationController* navController;

第二个视图控制器被称为SecondViewController。我会在用户点击栏按钮项时按下它:

self.navigationItem.rightBarButtonItem=[[UIBarButtonItem alloc]initWithTitle: @"Second View" style: UIBarButtonItemStylePlain target: self action: @selector(switchView:)];

这是执行的选择器:

- (void) switchView : (id) sender
{
    if(!nextController)
    {
        nextController= [[SecondViewController alloc]initWithNibName: @"SecondViewController" bundle: nil];
    }
    [self.navigationController pushViewController: nextController animated: YES];
}

然后在第二个视图控制器中自动出现一个标题为“后退”的按钮,切换到第一个视图。这对我来说很好,但我想设置标题和样式。所以我试图改变标题:

self.navigationItem.backBarButtonItem.title= @"First View";

但无所事事,标题仍然“回归”,我该如何改变呢?

另外,我不是采用错误或无效的方法,对吗?

2 个答案:

答案 0 :(得分:2)

如果您在title中设置了ViewController课程的viewDidLoad属性,那么当您将SecondViewController推送到{{1}}时,该字符串将显示为后退按钮的文字叠加。

答案 1 :(得分:1)

尝试此更改按钮标题。初始化并添加您自己的leftBarButtonItem并隐藏退回按钮。

UIBarButtonItem* backBtn =  [[UIBarButtonItem alloc] initWithTitle:@"BUTTON_NAME" style:UIBarButtonItemStyleDone target:self action:@selector(backAction)];

self.navigationItem.leftBarButtonItem = backBtn;
self.navigationItem.hidesBackButton = YES;

如果可以的话,你会想要隐藏原始的后退按钮,只需要创建一个backAction,它可以是使用popViewcontrollerAnimated函数的东西(如果你开始推动viewcontroller)。

- (void) backAction {
    [self.navigationController popViewControllerAnimated:YES];
}