2

ストーリーボードを使用していて、エントリ ポイントが viewController1 の場合。

App Delegate に条件を実行させてから、ストーリーボードのエントリ ポイント (viewController1 または viewController2) を選択する方法はありますか?

位置情報サービスをオンにするかどうかを App Delegate から選択してから、次のようなことを行いたいと考えています。

   (![CLLocationManager locationServicesEnabled]) 
   {

        self.viewController = [[viewController1 alloc] init];

        NSLog(@"vc is viewController2 from app del. loc svcs off");

    }
    else if ([CLLocationManager locationServicesEnabled])  
    {
        // alert location services denied

        self.viewController = [[viewController2 alloc] init];

        NSLog(@"vc is viewController2 from app del. loc svcs on");

        NSLog(@"core location is on");

    }
4

3 に答える 3

3

はい、できます。

次の方法で条件を記述します。

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

このようなことをしてください

if(Con1)
{
   window.rootViewController = [window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"rootViewController1"];
}
else
{
    window.rootViewController = [window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"rootViewController2"];
}
于 2013-02-07T11:54:00.253 に答える
1

VC1 を初期ビュー コントローラーとして設定できます (一般的に)。代わりに VC2 を初期コントローラーとして表示する場合は、 appDelegate でこれを行います。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
[self.window setRootViewController:[storyboard instantiateViewControllerWithIdentifier:@"VC2"]];
[self.window makeKeyAndVisible];

明示的に makeKeyAndVisible を実行しない場合、iOS はストーリーボードの初期ビュー コントローラーを使用して自動的に実行します

于 2013-02-07T11:53:15.050 に答える
0
    NSString *identifier;

    (![CLLocationManager locationServicesEnabled]) {

          identifier = @"UNIQUE_ID_OF_VIEW_CONTROLLER1";
    }

    else if ([CLLocationManager locationServicesEnabled])

    {
          identifier = @"UNIQUE_ID_OF_VIEW_CONTROLLER2";

    }   

    UIViewController *firstView = [storyboard instantiateViewControllerWithIdentifier:identifier];

    // NOW SET IT ROOT VIEW CONTROLLER OF THE APP 
    [self.window setRootViewController:firstView];

    [self.window makeKeyAndVisible];

    return YES;
于 2013-02-07T12:11:59.600 に答える