1

私のアプリケーションでは、ナビゲーションコントローラーを使用して、タブバーコントローラーとカスタムナビゲーションバーもロードする1つのビューをプッシュしています。問題は、タブバーが画面の下部に表示されなくなり、何が問題を引き起こしているのかわかりません。

次のビューで単純なタブバーをロードすると、それ自体が正しく配置されます...しかし、必要なのはタブバーコントローラーです。その場合、タブバーは下部の下に表示されなくなります。タブバーのビューとサイズのプロパティを変更しようとしましたが、問題は解決しませんでした。

また、タブの画像とテキストが表示されないことにも気付きました(「お気に入り」と「連絡先」の画像とテキストを設定しました。これらは十分な大きさで、タブの上面に表示されるはずですが、ではない)。

ちなみに、両方のタブは完全に機能します。

ここに画像があります。

次のコードを使用してタブバーをロードします。

- (void)viewDidLoad {
    [super viewDidLoad];
    myTabBarController = [[UITabBarController alloc] init];
    SettingsViewController* tab1 = [[SettingsViewController alloc] init];   
    AboutViewController* tab2 = [[AboutViewController alloc] init];
    NSArray* controllers = [NSArray arrayWithObjects:tab1, tab2, nil];
    myTabBarController.viewControllers = controllers;
    [self.view insertSubview:myTabBarController.view belowSubview:myNavigationBar];
}

ナビゲーションバーを削除するかどうかは関係ありません。代わりにこれを使用してテストしました:

[self.view addSubview:myTabBarController.view];

...ナビゲーションバーを忘れていますが、タブバーはまだ下部にあります。

問題が私のNIBファイルの1つにあるのか、それともビューをロードする方法にあるのかわかりません(ただし、AppleのSDKドキュメントを読んでいます)。何か案は?

もう1つの質問は...2番目のタブを選択したときにナビゲーションバーのタイトルを変更するにはどうすればよいか知っていますか?AboutViewController.mのviewDidLoadでそれをしなければならないと思いますが、それは正しいでしょうか?

お時間をいただきありがとうございます!

4

1 に答える 1

0

提出ごとに1つの質問をしてください-それは私たちがあなたをよりよく助けることを可能にします。

最初の問題については、タブバーコントローラーをそのビューではなくナビゲーションコントローラーに追加する必要があります。階層は次のようになります。

  • ナビゲーションコントローラー
    • タブバーコントローラー
      • あなたの見解

(Appleのドキュメントでは、タブバーはアプリケーション全体である必要があり、したがってナビゲーションコントローラーではなくルートビューである必要があると示唆されています)。

2番目の質問では、[戻る]ボタンのテキストはtitle、前のViewControllerのプロパティによって決定されます。これを変更するには、次のようにします(ソース)。

- ( void )viewDidLoad
{
    [ super viewDidLoad ];

    UIBarButtonItem *backButton =
    [[ UIBarButtonItem alloc ] initWithTitle:@"Back"
                                       style:UIBarButtonItemStyleBordered
                                      target:nil
                                      action:nil ];
    self.navigationItem.backBarButtonItem = backButton;
    [ backButton release ];
}

編集:ナビゲーションスタックの2番目のViewControllerのタイトルを設定したいようです。簡単だ:

- ( void )viewDidLoad
{
    [ super viewDidLoad ];

    self.title = @"Title";
}
于 2010-05-05T21:33:33.547 に答える