2011-10-11 73 views
2

我需要将导航控制器中后退按钮的默认标题值更改为其他值。更改后台按钮的标题

我用下面的代码尝试这样的:

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"Terug" style: UIBarButtonItemStyleBordered target:nil action:nil]; 
self.navigationItem.backBarButtonItem = newBackButton; 
[newBackButton release]; 

我也尝试:

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"Terug" style: UIBarButtonItemStylePlain target:nil action:nil]; 
self.navigationItem.backBarButtonItem = newBackButton; 
[newBackButton release]; 

我使用这个代码在viewDidLoad中结束。

我可以用下面的代码创建一个普通按钮(平方米):

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"Terug" style: UIBarButtonItemStyleBordered target:nil action:nil]; 
self.navigationItem.leftBarButtonItem = newBackButton; 
[newBackButton release]; 

这种解决方案的问题是,我需要创建一个弹出的视图控制器一个单独的方法。另一个问题将是按钮的形状,我需要一个箭头形按钮。

你有什么想法吗?

回答

1

如果你想要有一个自定义后退按钮,你需要创建一个新的选择器并为其分配一个新的选择器。 backBarButtonItem不可编辑,因此您需要设置leftBarButtonItem。

这是你可以创建自定义后退按钮

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setTitle:NSLocalizedString(@"Back", nil) forState:UIControlStateNormal]; 
[button setBackgroundImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal]; 

[button addTarget:navigationController action:@selector(backAction:)forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:button]; 
navigationController.navigationItem.leftBarButtonItem = backButton; 
[backButton release]; 

这是模拟后退按钮

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

有一个简单的解决方案

可以说你是从viewA移动到viewB 刚刚从viewA移动到viewB前更改viewA

的例如标题:

-(void)moveToViewB 
{ 

    // Add this line 
    self.title = @"Terug"; 
    // and push the new view as normal 
    [self.navigationController pushViewController:viewB animated:NO]; 
} 
0

呼叫从“viewDidLoad中”方法这个按钮选择。

- (void)addCustomBackButton { 

    /* enter your image name and size here */ 
    UIImage *backImage = [UIImage imageNamed:@"back_btn.png"]; 
    CGRect buttonRect = CGRectMake(5.0f, 0.0f, 12.0f, 20.0f); 
    /* enter your image name and size here */ 

    UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; // implemeent 'backAction' method in each VC 
    [backButton setFrame:buttonRect]; 

    UIImageView *imageView = [[UIImageView alloc] initWithImage:backImage]; 
    [imageView setFrame:buttonRect]; 
    [backButton addSubview:imageView]; 

    UIBarButtonItem *homeButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 
    self.navigationItem.leftBarButtonItem = homeButtonItem; 
} 

[OR,使之成为“Utitlity”类中的一个方法,并把它作为每个viewContorller它需要一个类的方法。]

而且,不要忘了贯彻落实“ backAction',像这样:

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

快乐编码!