У меня есть функция в UpdateViewController, которая вызывается делегатом MyDownloadController, который закрывает модальный вид (который является UpdateViewController).iPhone: modalview не закрывается
-(void)errorDownloading {
self.downloadController.delegate = nil;
[downloadController release];
[self dismissModalViewControllerAnimated:YES];
}
Я пробовал делать это с помощью и без взаимодействия с указателем делегата, и он все еще не закрывает представление.
Делегат вызывает метод, как это в пределах MyDownloadController:
-(void)connectionError {
if([delegate respondsToSelector:@selector(errorDownloading)]){
[delegate errorDownloading];
}
}
И эта функция вызывается другим делегатом (MyConnectionController).
Есть ли что-то не так с этим количеством делегатов? И будет ли ошибка указателя или что-то с ними влиять на возможность модального просмотра? Если да, то как/почему?
У меня есть эта структура для делегаций:
UpdateViewController (the actual modal view I am trying to close)
|- MyDownloadController (the controller that abstracts the process being done)
|- MyConnectionController (a helper class I wrote to interact with NSURLConnection)
|- NSURLConnection
Что такое лучший способ диагностировать эту проблему?
Если вы пытаетесь абстрагироваться от разных частей, то чем лучше это делать, чем делегатов? И использование self.parentViewController не работает. Любые другие идеи? – RyanJM
Извините за крайне поздний ответ, но, надеюсь, это поможет кому-то в конце. В любом случае, спасибо за то, что я правильно ответил на мой ответ. Есть разные способы отбросить это конкретное поведение, но я бы рекомендовал против этого. Предпочтительным способом является делегирование, потому что существует прямая ссылка. Второй предпочтительный путь - через цепочку ответчиков. Контроллер вида view - это следующий ответчик. См. [UIApp sendAction: @selector (myEvent :) для: ноль от: self forEvent: [UIEvent new]]; Контроллер вида, который прослушивает myEvent: в цепочке может ответить. См. Документы: http://bit.ly/10bBa4W – gauravk92