10

UIViewControllerにナビゲーションバーを追加しました。別のUIViewControllerからのみ表示されます。通常のナビゲーションバーの戻るボタンと同じように、矢印のような形をした左側の戻るボタンが欲しいのですが。IBを介してのみバーボタンを追加できるようです。プログラムで戻るボタンを追加する必要があると思います。これをどのように行うべきかについての提案はありますか?

現在、RootControllerでは、addSubViewを実行するだけで別のUIViewController(viewB)をプッシュします。viewBにナビゲーションバーを表示したい。アプリはビューベースであり、ナビゲーションコントローラーベースではありません。

4

3 に答える 3

13

ナビゲーションコントローラーを使用している場合:

MyViewController *_myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[[self navigationController] pushViewController:_myViewController animated:YES];
UIBarButtonItem *_backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleDone target:nil action:nil];
self.navigationItem.backBarButtonItem = _backButton;
[_backButton release], _backButton = nil;
[_myViewController release], _myViewController = nil;

ナビゲーションコントローラーを使用していない場合は、Three20スタイルのコンポーネントを調べてカスタムバーボタンを作成します。

于 2010-05-17T03:58:10.000 に答える
7

私はそれを次のように行いました

viewDidLoadメソッドで私はこのコードを持っています:

UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 41)];
    navBar.delegate = self;

    UINavigationItem *backItem = [[UINavigationItem alloc] initWithTitle:@"Back"];
    [navBar pushNavigationItem:backItem animated:NO];
    [backItem release];

    UINavigationItem *topItem = [[UINavigationItem alloc] initWithTitle:@"Your Title"];
    [navBar pushNavigationItem:topItem animated:NO];
    topItem.leftBarButtonItem = nil;
    [topItem release];

    [self.view addSubview:navBar];
    [navBar release];

次に、ヘッダーのUINavigationBarDelegateプロトコルに準拠を追加し、次のようにデリゲートメソッドを実装します。

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item
{
    //if you want to dismiss the controller presented, you can do that here or the method btnBackClicked

    return NO;
}
于 2011-10-26T06:49:04.213 に答える
0

この問題を解決する別のアプローチは、バーアイテムをナビゲーションバースタックに連続してプッシュするのではなく、ナビゲーションバーのitemsプロパティを設定することです。

//Define myFrame based on your needs
let navigationBar = UINavigationBar(frame: myFrame)
let backItem = UINavigationItem(title: "Back")
let topItem = UINavigationItem(title: "My Title")
navigationBar.setItems([backItem,topItem], animated: false)
于 2016-06-28T02:30:25.867 に答える