2016-02-26 2 views
1

У меня есть loginViewController как мой контроллер rootview, за которым следует главный экран, а затем другие экраны. Мои взгляды следуют толчок и поп-подход. Я хочу, если пользователь уже зарегистрировался в моем представлении, должен начинаться с главного экрана, а затем начинать с экрана входа в систему, а если я выхожу из главного экрана, он должен вернуться к экрану входа в систему, а структура push и pop должна поддерживаться. Я могу добиться этого, используя модальный переход, но мне нужно использовать подход push и pop, возможно ли это? В настоящее время я проверил уже зарегистрированное условие в моем appdelegate, чтобы установить контроллер rootview, но он терпит неудачу, если я попытаюсь выйти из него в своем стеке контроллера навигации.Переход непосредственно к контроллеру Main View для уже зарегистрированного пользователя

if !alreadyLoggedin 
{ 
    let mainListVC = storyBoard.instantiateViewControllerWithIdentifier(“MainListViewController”) 
    self.window!.rootViewController = mainListVC 
} 
else 
{ 
    let loginVC = storyBoard.instantiateViewControllerWithIdentifier("ViewController") 
    self.window!.rootViewController = loginVC 
} 
+0

вы можете показать код выхода? –

+0

При выходе из системы я просто запускаю текущий контроллер, используя self.navigationController? .popViewControllerAnimated (true) – Gamerlegend

+0

вы должны написать let storyboard = UIStoryboard (имя: «MyStoryboardName», bundle: nil) let vc = storyboard.instantiateViewControllerWithIdentifier ("loginViewController") в виде! UIViewController self.presentViewController (ЖЕЛ, анимированные: истинное, завершение: ноль) в логаута –

ответ

1

Это базовый вариант использования, пожалуйста, следуйте мои шаги.

  1. В вашей истории создайте навигационный контроллер с контроллером вида.
  2. Выберите диспетчер навигации в качестве своего контроллера начального представления в раскадровке.
  3. Создайте три вида контроллеров - InitialViewController, LoginViewController и MainViewController и установите идентификатор раскадровки для всех контроллеров представлений.

Созданный образец проекта для вас. Ссылка для скачивания (https://www.dropbox.com/s/zk8x7ptg5mzmotk/test.zip?dl=0)

+0

Да, это сработает, но мне нужно также поддерживать мою анимацию push и pop. Поэтому, если я включу анимацию, я увижу начальный контроллер, появляющийся между ними. – Gamerlegend

+0

Попробуйте загрузить его [Пример] (https://www.dropbox.com/s/zk8x7ptg5mzmotk/test.zip?dl=0) .. Я добавил анимацию. –

+0

Какой у вас код для выхода из системы? Возможно ли, что просмотр входа (и все данные/учетные данные) проходит через deinit (так потеряно)? Если вы положили заявление печати в deinit, вы должны иметь возможность подтвердить статус просмотра. Теоретически, вы можете использовать функцию rejectViewController для возврата к экрану входа в систему ... – goggelj

1

Вам нужно использовать. AppDelegate

Objective C

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

    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"LoginStatus"]) { 
     UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
     self.window.rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"loginController"]; 
    }else{ 
     UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
     self.window.rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"RootView"]; 

    } 

} 

СВИФТ - я надеюсь, что его правильно

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { 

     //Using UserDefaults check already loggedin user or not 
     if (!someStatus) { 

      let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil) 
      let vc = storyboard.instantiateViewControllerWithIdentifier("someViewController") as! UIViewController 
      self.presentViewController(vc, animated: true, completion: nil) 

     }else{ 


      let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil) 
      let vc = storyboard.instantiateViewControllerWithIdentifier("loginViewController") as! UIViewController 
      self.presentViewController(vc, animated: true, completion: nil) 

     } 

    } 
+0

Это то же самое, что и я, и когда я выхожу из системы, он не войдет в режим входа в систему – Gamerlegend

Смежные вопросы