3

で不思議な問題が発生していbackBarButtonItemます。アプリケーション全体で「戻る」のタイトルを置き換えたいのですが、ほとんどの-viewDidLoad場合、戻るボタンを置き換えると機能しませんが、他のビューでは機能せず、前のビューの名前が表示されます。誰かが同じ問題を抱えていますか?

PSを置き換える方法は、をインスタンス化してプロパティに設定するbackBarButtonItem標準的な方法です。UIBarButtonItemviewController.navigationIten.backBarButtonItem

4

3 に答える 3

16

backBarButtonItemは、現在のビューに表示される戻るボタンを設定しません。現在のビューに移動する戻るボタン、つまり次のビューの戻るボタンを設定します。

通常、戻るボタンのタイトルは前のView Controllerのタイトルであるため、これは理にかなっています。

ナビゲーションバーの左ボタンを直接設定する場合は、を使用しますself.navigationItem.leftBarButtonItem

于 2012-05-16T16:06:58.153 に答える
1

さて、ついに私はこの問題の解決策を見つけました。

アプリケーションのbackBarButtonItemに同じタイトルを付けたい場合は、UINavigationControllerをサブクラス化し、オーバーライド- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animatedして戻るボタンを置き換えることをお勧めします。

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    UIBarButtonItem *_backButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"BackButtonLabel", "")
                                                                    style:UIBarButtonItemStyleDone 
                                                                   target:nil 
                                                                   action:nil];
    viewController.navigationItem.backBarButtonItem = _backButton;
    _backButton = nil;
    [_backButton release];

    [super pushViewController:viewController animated:animated];
}

このようにして、アプリケーションのすべての戻るボタンに同じタイトルが付けられます。

これが他の人の役に立つことを願っています。

于 2012-05-17T07:44:20.540 に答える
1

次のviewcontrollerオブジェクトを割り当てた後、その時点で現在のビューからビューをプッシュするときは、次の行を入力するだけです。

YourViewController *objView = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];
          self.navigationItem.title=@"Back";
            [self.navigationController pushViewController:objView animated:YES];

次のビューは戻るボタンで表示されます...:)

于 2012-05-16T17:28:23.847 に答える