1
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:self action:@selector(backButtonTapped)];

それが私が使用しているコードです。戻るボタンをタップすると、backButtonTappedメソッドが呼び出されることはなく (ブレークポイントを配置します)、テキストをコマンドクリックbackButtonTappedしてそのメソッドにジャンプできるので、そこにあることがわかります。

ただし、に設定するとleftBarButtonItemボタンが表示されず、その領域をタップすると元に戻ります。

4

2 に答える 2

2

Usingは、現在のビュー コントローラー (FirstViewController など) ではなく、ナビゲーション スタックにプッシュされる次のビュー コントローラー (SecondViewController など)self.navigationItem.backBarButtonItemのバック バー ボタン項目を設定します。

現在スタックにあるView Controllerに戻るボタンを設定する場合は、現在のView Controllerで行っていたように設定するか、この新しいビューをスタックにプッシュするView ControllerでleftBarButtonItem使用します。backBarButtonItem

使用時にボタンが表示されなかったのleftBarButtonItemは、タイトルを「戻る」などに設定せずに空白のままにしたためです

例:

// Inside SecondViewController.m
//
// Customize left bar button item for SecondViewController
//
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self.navigationController action:@selector(popToRootViewControllerAnimated:)];

または

// Inside FirstViewController.m
//
// Customize the back bar button item for SecondViewController
//
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];

backBarButtonItem正しいことを行うので、ターゲットやアクションを設定する必要がないことに注意してください。

于 2013-10-03T21:59:25.390 に答える
0

viewDidLoad メソッドで次のことを試してください。

if ( [self.navigationController.viewControllers count] > 1 )
{
    UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    [backBtn setAdjustsImageWhenHighlighted:NO];
    [backBtn setShowsTouchWhenHighlighted:YES];
    [backBtn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
    UIImage *backBtnImage = [UIImage imageNamed:@"back.png"]; // <-- replace with your own image
    [backBtn setImage:backBtnImage forState:UIControlStateNormal];
    [backBtn addTarget:self action:@selector(backButtonTapped) forControlEvents:UIControlEventTouchUpInside];
    backBtn.frame = CGRectMake(0, 0, 40, 40);
    UIBarButtonItem *backBarBtnItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn];
    self.navigationItem.leftBarButtonItem = backBarBtnItem;
}
于 2013-10-03T22:15:51.340 に答える