2016-10-19 10 views
0

см ниже изображение:Решают Appearance IOS экрана

enter image description here

Я хочу, чтобы начать приложение «непосредственно» на «VIEW 1» экран или «VIEW 2» экран, без визуального появления «СТАРТ» экран которые определяют экран VIEW для отображения.

Eg. in loadView() of STARTviewcontroller.m 

if (some condition) 
    { 
    call "VIEW 1" screen 
    } 
    else 
    { 
    call "VIEW 2" screen 
    } 

Это лучший способ сделать это? что я должен использовать segue/[self presentViewController: ...] ??

+0

Вы можете сделать это в методе делегата 'doneFinishLaunching'. Однако вы не сможете перейти к «view1» или «view2», потому что ваш «StartViewController» не встроен в 'UINavigationController'. – Adeel

+0

спасибо @Adeel, он попробовал то, что вы сказали [viewdidload из контроллера «VIEW», который он назвал], но открывает его «START», поскольку стрелка раскадровки указывает на «START». –

+0

Вы правы. То, что я предложил, не было полным решением. Это было частью решения, и вы бы не достигли того, чего хотите, без этого. – Adeel

ответ

0

Сделайте одно.

Set "View1" контроллер как контроллер начального вида в вашем раскадровке.

enter image description here

Теперь и в вашем didFinishLaunch из AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // Override point for customization after application launch. 

    BOOL showSecondViewController = YES; 
    UIStoryboard *mainStoryBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 

    if (showSecondViewController) { 

     ViewController2 *objSecondViewController = [mainStoryBoard instantiateViewControllerWithIdentifier:@"ViewController2"]; 
     self.window.rootViewController = objSecondViewController; 
     [self.window makeKeyAndVisible]; 


    } else { 

     // It will show First view controller 
    } 
    return YES; 
} 

Надеется, что это помогает!

1

Вам необходимо установить идентификаторы для обозревателя viewControllers. Затем определите, какой ViewController должен присутствовать на уровне AppDelegate.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    if(someCondition) 
    { 
     UIViewController *yourController1= (UIViewController *)[mainStoryboard instantiateViewControllerWithIdentifier: @"viewController1Identifier"]; 
     [self.window.rootViewController presentViewController: yourController1animated:YES completion:nil]; 
    }else{ 
     //instantiate 2ndViewController 
     `enter code here` 
    } 
} 
+0

Благодаря @gontse, я сделал изменения, как вы сказали –

+0

- (BOOL) применение: (UIApplication *) применение didFinishLaunchingWithOptions: (NSDictionary *) launchOptions { UIStoryboard * mainStoryboard = [UIStoryboard storyboardWithName: @ "Main" пачке: ноль]; ViewController * yourController1 = (ViewController *) [mainStoryboard instantiateViewControllerWithIdentifier: @ "view1"]; [self.window.rootViewController presentViewController: yourController1 анимированный: ДА завершение: nil]; возвращение ДА; } –

+0

, но он открывается в поле зрения контроллера, где стрелка указывает, то есть на экране «СТАРТ». –

0

С нашей дискуссии в комментариях, что я мог бы понять, что вам не нужно использовать StartViewController вообще. Сначала сделайте View1 вашим Initial View Controller в раскадровке. И тогда просто сделайте это в своем AppDelegate.

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

    if (someCondition) { 

     return YES; 
    } 
    else { 

     UIWindow *keyWindow = application.keyWindow; 
     UIStoryboard *storyboard = keyWindow.rootViewController.storyboard; 
     ViewController2 *viewController2 = [storyboard instantiateViewControllerWithIdentifier:@"View2"]; 
     keyWindow.rootViewController = viewController2; 
    } 

    return YES; 
} 
+0

Нет. @adeel it dint работал ... !!! –

+0

он прыгает на VIEW1 .. где стрелки указывают .. –

+0

Вы изменили «Начальный контроллер просмотра» в своем раскадровке? – Adeel