0

ビューコントローラーを別のビューコントローラーにサブビューとしてロードしようとすると問題が発生します。

私が持っているのは、完全に機能するビュー(ポップやプッシュなど)としていくつかのviewControllerをロードするNavigationControllerです。次に、switch ステートメントを使用してすべての選択内容を確認する viewController に tabBar を配置することにしました。この switch ステートメントは、navigationController 内に表示される viewController の 1 つ内のメソッドを呼び出します。次に、このviewController内のメソッドは、別のviewcontrollerを、ナビゲーションコントローラー内のviewcontrollerのサブビューとして設定しようとします。

これは私のコードです。

TabBarViewController.m

#import "DetailViewController.h"

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
    switch (item.tag) {
        case 0:
        {
             NSLog(@"item 1 selected");
            DetailViewController *dVC = [[DetailViewController alloc] init];
            [dVC tabBarSelectedAction];
        }
            break;
        default:
            break;
    }

}

これにより、タブバーで選択されたアイテムがキャッチされます...次に、DetailViewControllerメソッドにメッセージを送信して、新しいサブビューをDetailViewController.viewにロードします

- (void)tabBarSelectedAction
{
    ButtonOneViewController *b1VC = [[ButtonOneViewController alloc] initWithNibName:@"ButtonOneViewController" bundle:[NSBundle mainBundle]];
    [self.testView addSubview:b1VC.view];

}

これは、サブビューを画面にロードしようとしている場所です..私はそれを正しくやっていると思いますが、何らかの理由で表示されません..もう1つやりたいことは、このビューを画面の下部から上にアニメーション化することです..

どんな助けでも大歓迎です。

4

2 に答える 2

0

メソッドはおそらく次のようになります。self と仮定しDetailViewControllerます。

- (void)tabBarSelectedAction {

   ButtonOneViewController *b1VC = [[ButtonOneViewController alloc] initWithNibName:@"ButtonOneViewController" bundle:[NSBundle mainBundle]];
   [self presentModalViewController:b1VC animated:YES];

}

それでも、あなたの論理は少しめちゃくちゃだと思います。割り当てて初期化しますDetailViewControllerが、どこにも提示しません。モーダル ビューを表示しない場合、DetailViewController にモーダル ビューが表示されることをどのように期待していますか。

編集:に追加するというコメントを考慮してUINavigationController、次のように変更します..

  [[self navigationController] presentModalViewController:b1VC animated:YES];

EDIT2:また、クラスを初期化しています。すでにself. メソッド-didSelectItem:は次のようになります。

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
switch (item.tag) {
    case 0:
    {
         NSLog(@"item 1 selected");
        [self tabBarSelectedAction];
    }
        break;
    default:
        break;
    }

}
于 2012-06-05T22:41:21.803 に答える
0

新しいものを作成したときDetailViewController、プッシュまたは現在のタイプのメソッドを介してビュー階層の一部にしませんでした。サブビューの追加は機能する場合と機能しない場合がありますが、追加先のオブジェクトが画面を使用していないため、表示されません。

于 2012-06-05T22:27:10.057 に答える