Как перезагрузить представление при использовании 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 ответ
Есть разные способы.
Используйте делегат и объявите метод для перезагрузки в главном контроллере представления, скажем, "reloadData". Перед представлением контроллера представления входа в систему установите главный контроллер представления в качестве делегата для loginSuccessEvent. После успешного входа в систему, прежде чем закрыть ее, вызовите метод делегата.
Установить свойство 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
Установите Main view Controller как делегат к свойству делегата в Login View Contoller после создания экземпляра и перед его представлением.
loginViewController *login = [[LoginViewController alloc] init]; // Установить ваш делегат после создания экземпляра и перед представлением login.loginDelegate = self; [self presentViewController: логин];
Реализуйте метод для перезагрузки
-(void) loginSuccessPostProcess
{
//Your Method.
}