0

ナビゲーションバー内にビューコントローラーがあり、4つのタブとビューコントローラーを備えたタブバービューコントローラーをプッシュします。TabBarViewControllerNSLog(@"%@", self.navigationController)の viewDidLoad の内部では、(null) として表示されます。NSLog(@"%@",self.tabBarController)TabBarViewController の viewDidLoad 内でも (null) です。戻るボタン用のセレクターがdismissTabと呼ばれ、ビューコントローラーをポップして動作するため、奇妙です。そこで NSLog を実行しても (null) として表示されないため、どこかで問題が発生しています。これが、各タブの ViewControllers が NavigationBar と TabBar によって隠されている理由だと感じています。NavigationBar/TabBars がコントローラーの一部を非表示/カバーしているという投稿を読んだことがありますが、それらはすべて、テーブル ビューのサイズを変更したり、オブジェクトを上下に変更したりするためのハックを見つけるだけです。解決策を見つけたい。

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    UIStoryboard *iPhoneStoryBoard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
    ViewController *mainViewController = (ViewController*)[iPhoneStoryBoard instantiateViewControllerWithIdentifier:@"HomePage"];
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:mainViewController];

    self.window.rootViewController = navigationController;
    [self.window makeKeyAndVisible];
    return YES;
}

tabBarsを押したときの ViewController.m

UIStoryboard *iPhoneStoryBoard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
        GRxTabBarViewController *tabViewController = (GRxTabBarViewController*) [iPhoneStoryBoard instantiateViewControllerWithIdentifier:@"GRxTabBarViewController"];

PViewController *pController = [tabViewController.viewControllers objectAtIndex:0];
SViewController *sController = [tabViewController.viewControllers objectAtIndex:1];
IViewController *iController = [tabViewController.viewControllers objectAtIndex:2];
MViewController *mController = [tabViewController.viewControllers objectAtIndex:3];

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:iController];

[tabViewController setViewControllers:[NSArray arrayWithObjects:pController, sController, navController, mController, nil]];
[self.navigationController pushViewController:tabViewController animated:YES];

GRxTabBarViewControllerの viewDidLoad で戻るボタンとセレクターのイメージを設定し、イメージが設定されていてセレクターがスタックからポップするため、どこが間違っているのかわかりません。また、データをロードして、pViewController、iViewController、sViewController、および mViewController で処理を実行できます。

誰でもこの問題を抱えているか、私に指示/案内できる解決策を知っていますか? 正直であることは何でも役に立ちます。前もって感謝します!

4

2 に答える 2

0

navigationController と tabBarController をログに記録したい場合は、(void)viewWillAppear:(BOOL)animated内ではなく 内で行う必要があります(void)viewDidLoad

于 2013-10-19T01:56:58.777 に答える