web-dev-qa-db-ja.com

uinavigationbarの戻るボタンのテキストを変更する方法

現在、テーブルセルタッチで読み込まれるサブビューの戻るボタンのテキストを変更しようとしています。しかし、私がそれを実装しようとしている方法でさえ、それはまだ戻るボタンに両親のタイトルを示しています。

そのようにviewdidloadメソッド内の戻るボタンに新しい値をロードしようとしています

UIBarButtonItem *myBarButtonItem = [[UIBarButtonItem alloc] init];
myBarButtonItem.title = @"Back";
self.navigationItem.backBarButtonItem = myBarButtonItem;
[myBarButtonItem release];

しかし、それは機能していません。

19
C.Johns

現在のビューではなく、前のビューからself.navigationItem.backBarButtonItemを変更する必要があります(私は知っています、それは少し非論理的であるようです)。たとえば、テーブルビューでは、次の操作を実行できます。

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self setTitle:@"My title"];
    UIBarButtonItem *boton = [[UIBarButtonItem alloc] initWithTitle:@"Custom back button text" style:UIBarButtonItemStyleBordered target:self action:@selector(mySelector:)];
    self.navigationItem.backBarButtonItem  = boton;
    [boton release];
}
30
Juanjo

これは、各設定を読んで再読し、試してみるまで、ドキュメントがそれほど明確ではない場所です。
デフォルトの戻るボタンのタイトルを変更するには、この行をviewDidLoad()に追加します

self.navigationController.navigationBar.topItem.title = @"Your Label";

ボタンを非表示にする場合は、値を@""空の文字列に設定します。

26
Hung Tran

わかりました。このコードを親ビューのtableView:didSelectRowAtIndexPath:メソッドに投稿しました。これは、ユーザーが選択できる複数のテーブルセルでの私の外観です。お役に立てれば。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Navigation logic may go here. Create and Push another view controller.
    if (indexPath.section == 0) { //--- picks (first) section

     ChildViewController *childViewController = [[ChildViewController alloc] initWithNibName:@"ChildViewController" bundle:nil];
     // ...
     // Pass the selected object to the new view controller.
     [self.navigationController pushViewController:childViewController animated:YES];
    //--- this sets the back button to "Back" every time you load the child view.
     self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style: UIBarButtonItemStyleBordered target:nil action:nil] autorelease];

        if(indexPath.row == 0) { //--- picks row
            childViewController.title = @"Bike";
        }
        if(indexPath.row == 1) {
            childViewController.title = @"Model";
        }
        [vehicleSearchResponseTableViewController release];
    }


}
9
C.Johns

Xcode 5で戻るボタンの名前を変更する最良の方法は、戻るボタンが戻るViewControllerのナビゲーションアイテムのIBにある[戻るボタン]フィールドを編集することです。たとえば、詳細画面に移動するリストTableViewControllerがある場合は、リストTableViewControllerのナビゲーション項目(IB内)の[戻る]ボタンを変更して、詳細画面に表示される戻るボタンの名前を変更します。

2
Peter

それはあなたがやろうとしているようには機能しません。ナビゲーションボタンには、常に前のビューのタイトルが表示されます。ただし、できること-新しいビューをプッシュする前に、最初のビューのタイトルを変更します。同じ問題を解決するために私が見つけたのはこれだけです。

1
sha

ViewDidLoadの後

self.navigationController!.navigationBar.backItem?.title = "戻る"

0
mashern

私の提案は、親のページタイトルバーに別のラベルを追加することでした。私にとってはうまくいきました。

let titleLabel = UILabel(frame: CGRect(x: (view.frame.width * (3/8)), y: 0, width: (view.frame.width * 0.25 ), height:30))
        titleLabel.text = "Title"
        titleLabel.textAlignment = .center
        titleLabel.textColor = UIColor.white
        titleLabel.font = UIFont.systemFont(ofSize: 20)
        navigationItem.titleView = titleLabel 
0
gamal

これまでのところ、コードは正常に見えます。

このコードは、

[super viewDidLoad];

ステートメント(間違っている)またはその後(良い)?

0
Hermann Klecker