2013-12-20 4 views
0

У меня случился сбой приложения в iOS7, но он работает на iOS6. Отлаживая следующий код из моего AppDelegate, я проверил, что в iOS7 выполняется следующая функция, а затем загружается контроллер модального представления.Модальные образы в iOS7

- (void)presentModalWebViewWithURL:(NSURL *)url title:(NSString *)title 
{ 
    [self.modalWebViewController dismissModalViewControllerAnimated:YES]; 
    self.modalWebViewController = [[[MyModalWebViewController alloc] initWithURL:url] autorelease]; 
    self.modalWebViewController.title = title; 
    UINavigationController *nav = [self.modalWebViewController modalNavigationControllerWithTarget:self dismissSelector:@selector(dismissModalWebView)]; 
    [self.window.rootViewController presentViewController:nav animated:YES completion:NULL]; 
} 

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

Что происходит в iOS7, так это то, что когда контроллер модального просмотра пытается загрузить работу viewWillAppear, я смог проверить, что модальный контроллер просмотра изменил все значения и даже свойства указывают на объекты разных типов. Я предполагаю, что они освобождены, но я не могу понять, почему и как это исправить. Какие-либо предложения?

ответ

1

Когда вы отклоняете контроллер модального представления, вы должны вызвать метод увольнения на контроллере представления, который представил контроллер вида. Также метод dismissModalViewControllerAnimated: устарел, вместо этого вы должны использовать dismissViewControllerAnimated:completion:. Поэтому, глядя на ваш код, вы, вероятно, должны называть метод отклонения на self.window.rootViewController, так как это то, из чего вы представляете модальные представления.

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

+0

Спасибо Galvin. Я получаю ваш совет, и я буду копаться в этом. –

Смежные вопросы