0

ViewDidLoad にこれを追加して、既存のビュー コントローラーに UINavigationController を追加しようとしています。

- (void)viewDidLoad
{
    [super viewDidLoad];

    navController = [[UINavigationController alloc]init];

    [self.view addSubview:navController.view];
}

しかし、このようにすると、視界が完全に遮られます。上部に UINavigationBar を配置しますが、残りのビューは入力に応答しません。

これが私が見解を提示する方法です。SecondViewControllerは、私がNavControllerを持ちたいものです。

UITabBarController *tabController = [[UITabBarController alloc] init];

FirstViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"CardsViewController" bundle:nil];

UITabBarItem *tab1 = [[UITabBarItem alloc] initWithTitle:@"First" 
                                                   image:[UIImage imageNamed:@"img1.png"] tag:1];
[viewController1 setTabBarItem:tab1];    

SecondViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"ShoppingViewController" bundle:nil];

UINavigationController *SecondViewNavCont = [[UINavigationController alloc]initWithRootViewController:viewController2];

UITabBarItem *tab2 = [[UITabBarItem alloc] initWithTitle:@"Second" 
                                                   image:[UIImage imageNamed:@"img2.png"] tag:2];
[SecondViewNavCont setTabBarItem:tab2];

UIViewController *viewController3 = [[UIViewController alloc] init];
UITabBarItem *tab3 = [[UITabBarItem alloc] initWithTitle:@"Third" 
                                                   image:[UIImage imageNamed:@"img3.png"] tag:3];
[viewController3 setTabBarItem:tab3];


tabController.viewControllers = [NSArray arrayWithObjects:viewController1, 
                                 viewController2, 
                                 viewController3, 
                                 nil];

[self.view addSubview:tabController.view];
4

4 に答える 4

3

現在のViewControllerに追加することはできませんViewControllerを提示する代わりに、このViewControllerをNavigationViewControllerに追加して提示する必要があります。

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:YourPresentedViewController];
//then present the navController
[self presentModalViewController:navController animated:YES];

今、あなたがそれを提示するとき、次のことをします

NSArray arrayWithObjects:viewController1, 
                                 SecondViewNavCont, 
                                 viewController3, 
                                 nil];
于 2012-06-18T11:54:22.597 に答える
2

uiviewcontroller を uinavigationcontroller にロードするために、次のコードを試すことができます。

    yourviewController *viewcontroller=[[yourviewController alloc] initWithNibName:@"yourviewController" bundle:nil];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewcontroller];
    [self presentModalViewController:navController animated:YES];

(または) アプリケーションの起動時に uinavigationcontroller をロードしたい場合は、アプリケーションのデリゲート クラスで以下のコードを試してください。

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
   UINavigationController *navController = [[UINavigationController alloc]  initWithRootViewController:viewcontroller.view];
   [self.window addSubview:navController.view];
   [self.window makeKeyAndVisible];
   return YES;
}

いらっしゃいませ!

于 2012-06-18T11:59:13.857 に答える
1

オブジェクトのRootViewControllerを設定する必要がありnavControllerます。次に、pushViewControllerメソッドを使用してUIViewcontrollerオブジェクトをプッシュできます。

于 2012-06-18T11:53:41.257 に答える
1

そのナビゲーションコントローラーのビューを追加する必要があります。追加されたナビゲーションコントローラーにはビューがないため、UIViewControllerにオーバーレイされていました。追加する必要があります

 [[UINavigationController alloc] initWithNibName:@"ViewControllerName" bundle:nil];
于 2012-06-18T11:54:40.037 に答える