0

最初にいくつかのオプションを表示する単純なviewControllerをロードしてから、いくつかのボタンをクリックします。ボタンのクリックに応じて、navigationControllerまたはtabbarControllerをロードします。これどうやってするの ?

4

3 に答える 3

2

ビューを切り替えたい場合は、ウィンドウのルートビューコントローラーを交換します。

たとえば、私のアプリでは、最初にロード画面を表示してから、ビューをログイン画面に切り替えます。

これを行うには、アプリデリゲートへの参照が必要です。その後、windowプロパティにアクセスして、ルートビューコントローラーを置き換えることができます。

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
LoginViewController *loginVC = [[LoginViewController alloc] init];              
appDelegate.window.rootViewController = loginVC; 
于 2012-04-25T09:15:22.310 に答える
1

simpleViewControllerで:

- (IBAction) yourButtonAction:(id)sender
{
   UIViewController *Vc = [[theViewControllerYouWantToShow alloc]init];
  UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:Vc];
  [self  presentModalViewController:nav animated:YES];
}

編集 :

viewControllerのコンテンツを表示するための3つのオプションがあります。

  1. 上記の例のようにpresentModalViewController:

  2. viewControllerビューをsubViewとして現在のviewControllerに追加します。あなたの場合:[simpleViewController.view addSubView:nav.view];

3.または、単純なViewControllerがナビゲーションルートviewControllerである場合は、他のviewControllerをそのナビゲーションスタックにプッシュできます。

于 2012-04-25T08:45:32.410 に答える
1

appdelegate.hで

@property (strong, nonatomic) id<UIApplicationDelegate>delegate;

appdelgate.mで

@synthesize delegate;

私の最初のviewControllerの.hファイルで

AppDelegate *myappDelegate;
-(IBAction)start:(id)sender;

私の最初のviewControllerの.mファイルで

-(IBAction)start:(id)sender
{
    NSLog(@"Start Button is clicked");
    mvc = [[MasterViewController alloc]initWithNibName:@"MasterViewController" bundle:nil];
    myappDelegate = [[UIApplication sharedApplication]delegate];
    myappDelegate.navigationController = [[UINavigationController alloc]initWithRootViewController:mvc];
    myappDelegate.window.rootViewController = myappDelegate.navigationController;
    [myappDelegate.window makeKeyAndVisible]; 
}
于 2012-04-25T10:49:58.623 に答える