0

タブバーベースのアプリがあります。しかし、ユーザーは 1 つの画面から、タブ バーを持たないより詳細なビューに移動する場合があります。

詳細画面には、上部にナビゲーション バーがあり、右側にはナビゲーション バーの一部として機能するシンプルなボタンがあります。(IBのBar Button Item内にナビゲーションバーと右ボタンを作成し、アウトレットに取り付けました)

ただし、この画面から戻る必要があるため、標準のナビゲーション バーを使用して標準の戻るボタンを追加したいと思います。(IB で手動で追加することもできますが、すぐに利用できる標準イメージがなく、標準を使用する方が「スマート」だと思いました)

ここで、SettingsVC1 内に詳細ビュー (SettingsVC2) を作成します。

SettingsVC2 *settingsVC2 = [[SettingsVC2 alloc] initWithNibName:@"SettingsVC2" bundle:nil selectedTCNumber:tcNumber];
settingsVC2.delegate = self;
UIBarButtonItem *temporaryBarButtonItem = [[UIBarButtonItem alloc] init];
temporaryBarButtonItem.title = @"Back";
settingsVC2.navigationItem.backBarButtonItem = temporaryBarButtonItem;
settingsVC2.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:settingsVC2 animated:YES completion:nil];   

ナビゲーション バー自体は SettingsVC2 に表示されますが、[戻る] ボタンは表示されません。

これは、SettingsVC2 自体のコードです。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil selectedNumber: (NSInteger) numberx
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.tabBarItem.image = [UIImage imageNamed:@"settings"];
        self.view.backgroundColor = [UIColor whiteColor];
        self.tableView.opaque = TRUE;

        navBar.tintColor = [UIColor colorFromRGBIntegers:W_COLOR_R green:W_COLOR_G blue:W_COLOR_B alpha:W_COLOR_A];
        navBar.topItem.title =  NSLocalizedString(@"Settings2", @"Settings2");

        UIBarButtonItem *temporaryBarButtonItem = [[UIBarButtonItem alloc] init];
        temporaryBarButtonItem.title = @"Back";
     /*
        self.navigationItem.backBarButtonItem = temporaryBarButtonItem;
        [self.navigationItem.backBarButtonItem setEnabled:YES];
        [self.navigationItem.backBarButtonItem setStyle:UIBarButtonItemStyleDone];
      */
        navBar.topItem.backBarButtonItem = temporaryBarButtonItem;
    }
    return self;
}

このコードもコメントアウトされたコードも、戻るボタンを表示しません。

戻るボタンを取得する「標準的な」方法はありますか (私の場合は UINavigationController を使用しません)、または IB に手動で追加して適切な背景画像を取得する必要がありますか?

どうもありがとう!

4

1 に答える 1

0

2番目のビューではなく、最初のビューにbackbuttonItemを追加する必要があります。コースが非常に混乱している場合、これ。とにかく、私は次の2つの方法を使用して、戻るボタンのタイトルを設定およびクリアします。

- (void)defaultBackButtonTitle
{   
    UIBarButtonItem *temporaryBarButtonItem = [UIBarButtonItem new];
    [temporaryBarButtonItem setTitle:@"Back"];
    self.navigationItem.backBarButtonItem = temporaryBarButtonItem;
}

- (void)clearBackButtonTitle
{   
    self.navigationItem.backBarButtonItem = nil;
}

戻るボタンが必要なviewControllerを押したときに最初に呼び出し、viewWillAppearを取得したときに(最初の上部のView Controllerで)2番目に呼び出します。

于 2012-07-22T18:33:05.287 に答える