現在、テーブルセルタッチで読み込まれるサブビューの戻るボタンのテキストを変更しようとしています。しかし、私がそれを実装しようとしている方法でさえ、それはまだ戻るボタンに両親のタイトルを示しています。
そのようにviewdidloadメソッド内の戻るボタンに新しい値をロードしようとしています
UIBarButtonItem *myBarButtonItem = [[UIBarButtonItem alloc] init];
myBarButtonItem.title = @"Back";
self.navigationItem.backBarButtonItem = myBarButtonItem;
[myBarButtonItem release];
しかし、それは機能していません。
現在のビューではなく、前のビューから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];
}
これは、各設定を読んで再読し、試してみるまで、ドキュメントがそれほど明確ではない場所です。
デフォルトの戻るボタンのタイトルを変更するには、この行をviewDidLoad()
に追加します
self.navigationController.navigationBar.topItem.title = @"Your Label";
ボタンを非表示にする場合は、値を@""
空の文字列に設定します。
わかりました。このコードを親ビューの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];
}
}
Xcode 5で戻るボタンの名前を変更する最良の方法は、戻るボタンが戻るViewControllerのナビゲーションアイテムのIBにある[戻るボタン]フィールドを編集することです。たとえば、詳細画面に移動するリストTableViewControllerがある場合は、リストTableViewControllerのナビゲーション項目(IB内)の[戻る]ボタンを変更して、詳細画面に表示される戻るボタンの名前を変更します。
それはあなたがやろうとしているようには機能しません。ナビゲーションボタンには、常に前のビューのタイトルが表示されます。ただし、できること-新しいビューをプッシュする前に、最初のビューのタイトルを変更します。同じ問題を解決するために私が見つけたのはこれだけです。
ViewDidLoadの後
self.navigationController!.navigationBar.backItem?.title = "戻る"
私の提案は、親のページタイトルバーに別のラベルを追加することでした。私にとってはうまくいきました。
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
これまでのところ、コードは正常に見えます。
このコードは、
[super viewDidLoad];
ステートメント(間違っている)またはその後(良い)?