Закрытие модального (через делегата) из другого представления - PullRequest
0 голосов
/ 18 марта 2012

Я надеюсь, что просто упускаю из виду что-то простое.Но вот сценарий.

У меня есть root vc, который открывает модальное представление LoginScreen.В этом классе представления я настроил синтезированный протокол (ViewControllerDelegate), и как только пользователь входит в систему через модальный режим, родительский VC закрывает модальный и все в порядке.

В LoginScreen.m, чтобы закрыть модальное окно, все, что мне нужно использовать, это код:

[self.delegate loginConfirmed:self];

Это прекрасно работает.Тем не менее, у меня есть другое мнение, которое подталкивается, когда вход в систему подтвержден.Еще как модал конечно.Назовите его LoginScreen2.

Я не могу понять, как заставить модал закрыться от LoginScreen2 и вернуть его в корневой VC.Я перепробовал кучу разных вариантов, как это, но не повезло.

[((LoginScreen *)self.parentViewController).delegate loginConfirmed:((LoginScreen *)self)];

Я искал и возился пару часов, но не повезло.Я снова надеюсь, что мне просто не хватает чего-то простого и просто не вижу этого.Если у кого-то есть идеи, это было бы замечательно.

1 Ответ

2 голосов
/ 18 марта 2012

Не уверен, кто представляет второй контроллер представления, но одна вещь, которая может вам помочь, это знать, что модально представленный контроллер представления может отклонить себя:

[self dismissModalViewControllerAnimated:YES];

Контроллер корневого представления может проверить состояние пользователя, когда оно появляется, и presentModalViewController:Login1. Login1 изменяет состояние входа пользователя и закрывает себя. Root видит другое пользовательское состояние (когда он собирается снова появиться с помощью метода viewWillAppear:) и представляет модальное значение на Login2. Нет необходимости в делегировании.

...