Как перезагрузить представление при использовании dismissViewControllerAnimated

Я надеюсь, что кто-то может указать мне правильное направление.

У меня есть 2 контроллера, MasterViewController (который отображает много данных) и LoginViewController (регистрирует пользователей и получает эти данные).

MasterViewController является корневым контроллером. У меня есть этот код справа вверху, чтобы проверить, вошел ли пользователь в систему. Если они вошли в систему, вызывается метод loadView, в противном случае они передаются в контроллер представления входа в систему.

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSDictionary *session = [Global getSession];
    if(!session){

        // Not logged in.
        LoginViewController *loginViewController = [LoginViewController alloc];
        [self.navigationController presentViewController:loginViewController animated:YES completion:nil];

    }else{
        [self loadView];
    }
}

Как только они входят в систему, у меня есть этот код, который возвращает их в MasterViewController с этим кодом:

[self dismissViewControllerAnimated:NO completion:nil];

Проблема в том, что MasterViewController вообще не загружен. Как связать весь этот вид до того, как пользователь вернется к нему?

Спасибо Питер

1 ответ

Решение

Есть разные способы.

  1. Используйте делегат и объявите метод для перезагрузки в главном контроллере представления, скажем, "reloadData". Перед представлением контроллера представления входа в систему установите главный контроллер представления в качестве делегата для loginSuccessEvent. После успешного входа в систему, прежде чем закрыть ее, вызовите метод делегата.

  2. Установить свойство bool, isReloadNeeded в приложении делегат. В главном контроллере представления, viewWillAppear или же viewWillAppear проверьте это bool для перезагрузки данных. установите для bool значение yes из контроллера входа в систему и выполните сброс после перезагрузки в главном контроллере представления.

Сделать вариант 1:

Определить протокол для взаимодействия

@protocol LoginDelegate

   -(void) loginSuccessPostProcess;

@end

В логине View Controller.

Файл.h -> Объявление свойства

@property (weak) id< LoginDelegate> loginDelegate;

.m -> После успешного входа в систему перед закрытием, вызовите метод делегата

//Login Success
[self. loginDelegate loginSuccessPostProcess];
[self dismissViewControllerAnimated:YES completion:nil];

Главный вид контроллера -> Реализация метода.

.h -> Принять к протоколу

  @interface mainViewCOntroller < LoginDelegate>

.m

  1. Установите Main view Controller как делегат к свойству делегата в Login View Contoller после создания экземпляра и перед его представлением.

    loginViewController *login = [[LoginViewController alloc] init]; // Установить ваш делегат после создания экземпляра и перед представлением login.loginDelegate = self; [self presentViewController: логин];

Реализуйте метод для перезагрузки

 -(void) loginSuccessPostProcess
 {
        //Your Method.
  }
Другие вопросы по тегам