Мой "viewDidLoad" вызывается каждый раз, когда я открываю одно и то же окно после первого закрытия? - PullRequest
0 голосов
/ 15 декабря 2011

Здравствуйте, у меня очень простой вопрос, я инициализировал некоторые переменные и запустил обновления диспетчера движения по методу "viewDidLoad", но после того, как я закончу его использовать, я закрываю окно и возвращаюсь в окно предварительного просмотра.Мой вопрос заключается в том, вызывается ли метод каждый раз, когда я открываю это окно через переход в раскадровке.(Поскольку в описании сказано, что он делает это, когда загружает его в память, а не на экран)

Я закрываю окно, сообщая этому окну, что предыдущее является его делегатом, например:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"Drawing"])
    {
        DrawingViewController *temp = segue.destinationViewController;
        temp.delegate = self;
    }

} 

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

- (IBAction)cancel:(id)sender
{
    [self.delegate DrawingViewControllerDidCancel:self];
}

Это метод закрытия:

- (void)DrawingViewControllerDidCancel: (DrawingViewController *)controller
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

О, и если бы кто-то был так любезен сказать мне, почему, вызывая себя, я закрываю другое окно (потому что я думаю, что self относится к делегату, а не к тому, которого я хочу закрыть).

Большое спасибо!

1 Ответ

0 голосов
/ 15 декабря 2011

Поместите несколько операторов журнала в метод viewDidLoad, это будет достаточно легко выяснить для себя.Вы не можете ожидать, что контроллер представления, который был отклонен, зависает в памяти - он может быть выгружен в любое время из-за нехватки памяти.Вы даже назвали it temp;)

dismissModalViewController передается по цепочке контроллера вида, вы можете вызвать его на самом модальном контроллере или на представленном контроллере, он имееттот же эффект.В настоящее время представленный модальный контроллер представления отклонен.

Из документации:

Если вы последовательно представляете несколько контроллеров модального представления и таким образом строите стек контроллеров модального представления, вызывая этот метод на контроллере представления ниже в стекеудаляет его непосредственный дочерний контроллер представления и все контроллеры представления выше этого дочернего элемента в стеке.Когда это происходит, только самый верхний вид отклоняется в анимационном режиме;любые промежуточные контроллеры представления просто удаляются из стека.Самое верхнее представление отклоняется, используя его модальный стиль перехода, который может отличаться от стилей, используемых другими контроллерами представления ниже в стеке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...