1

アプリデリゲートにUINavigationControllerを設定し、それを使用してログインページをプッシュしました。ログインすると、呼び出されているビューにUITabBarControllerが表示され、タブごとに個別のUINavigationControllerが表示されます。私の問題は、タブバー内のナビゲーションコントローラーを介してビューを押しても何も起こらないことです。ビューをまったくプッシュしません。pushViewControllerを機能させるために次に何をすべきかわかりません。どんな助けでも大歓迎です。ありがとう。

これが私のコードです:

この関数は、ログイン時に呼び出されます--rootViewクラスから

- (void) login
{
   UIViewController *_mainPageViewController = [[MainPageViewController alloc] initWithNibName:@"MainPageViewController" bundle:[NSBundle mainBundle]];
   [self.navigationController pushViewController:_mainPageViewController animated:YES];
}

MainPageViewController.class--

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
   if (self) {  
        [self setUpTabBar];
    }
    return self;
}

-(void)setUpTabBar { 

MeViewController *_meViewController = [[MeViewController alloc]init];
_meViewController.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"me" 
                                                             image:[UIImage imageNamed:@"img1.png"] tag:1];
UINavigationController *firstNavController = [[UINavigationController alloc]initWithRootViewController:_meViewController];

TodoViewController *_todoViewController = [[TodoViewController alloc]init];
_meViewController.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"me" 
                                                             image:[UIImage imageNamed:@"img2.png"] tag:1];
UINavigationController *secondNavController = [[UINavigationController alloc]initWithRootViewController:_meViewController];

mainBarController.viewControllers = [[NSArray alloc] initWithObjects: firstNavController, secondNavController, nil];
mainBarController.delegate = self;
mainBarController.selectedIndex=0;

[firstNavController release];
[_meViewController release];   
[secondNavController release];
[_exploreViewController release];

[[[UIApplication sharedApplication]keyWindow]addSubview:mainBarController.view];
}

MeViewController.class--ビューをまったくプッシュしません

- (IBAction)showMeInfo:(id)sender {
UIViewController *_meInfoViewController = [[MeInfoViewController alloc] initWithNibName:@"MeInfoViewController" bundle:[NSBundle mainBundle]];

[self.navigationController pushViewController:_meInfoViewController animated:YES];
}
4

1 に答える 1

0

100% 理解しているかどうかはわかりませんが、ここでは -

MainPageViewControllerのサブクラスだと思いUITabBarControllerます。この場合、mainBarControllerこのクラスのタブ バー コントローラーは になるため、変数は必要ありませんself。あなたは電話するでしょう

self.viewControllers = [NSArray arrayWithObjects: firstNavController, secondNavController, nil];

MainPageViewControllerまた、 のインスタンスを既存のインスタンスにプッシュしているためUINavigationController、コード内にサブビューを追加する必要はありませんMainPageViewController- たとえば、コード行

[[[UIApplication sharedApplication]keyWindow]addSubview:mainBarController.view];

は必須ではなく、存在すべきではありません (UINavigationControllerナビゲーション スタックからプッシュ/ポップされるビュー コントローラーに応じて、どのビューが表示されるかなどを自動的に制御します)。

于 2012-09-25T14:08:23.940 に答える