-self parentViewController - dismissModalViewController не работает на iOS 5 - PullRequest
7 голосов
/ 21 октября 2011

Итак, есть какие-нибудь подсказки по этому поводу? Мне пришлось использовать [self dismiss modalviewcontroller, чтобы отклонить modalviews. Забавный факт: при отклонении tabbarcontroller я все еще мог использовать ссылку на parentviewcontroller, при отключении обычного viewcontroller, нет.

Ответы [ 6 ]

22 голосов
/ 21 октября 2011

В iOS 5 вам нужно будет использовать селектор presentingViewController вместо селектора parentViewController.

3 голосов
/ 10 ноября 2011
-(UIViewController *)getParentViewController{   
    float currentVersion = 5.0;
    float sysVersion = [[[UIDevice currentDevice] systemVersion] floatValue];

    if (sysVersion >= currentVersion) {
        // iOS 5.0 or later version of iOS specific functionality hanled here 
           return self.presentingViewController;
    }
    else {
        //Previous than iOS 5.0 specific functionality
           return self.parentViewController;

    }
}
1 голос
/ 22 марта 2012

Я создал категорию, которая добавляет presentingViewController на iOS 4.

Она отключается на iOS 5.

Вы можете использовать ее без проблем.Пожалуйста, смотрите назад-модальный .

1 голос
/ 06 ноября 2011

Приложение, которое у меня есть в магазине, было построено с использованием ios SDK 4.3 и использует self.parentViewController dismissModalViewControllerAnimated:YES.Он продолжает работать с устройствами IOS 5.Я думал, что так как он был построен на SDK 4.3.Теперь, когда я обновляю его с помощью нового кода xcode и ios 5.0 sdk, он не будет работать как есть, и мне придется изменить все элементы закрытия представления, чтобы использовать обходной путь условного селектора, упомянутый выше.* Просто подумал, что упомяну, что увольнение от родителя должно работать на ios 5 (по крайней мере, в моем случае с ios 4.3 sdk).Я не могу говорить за предыдущие SDK или другие селекторы с parentViewController.

0 голосов
/ 15 октября 2014

Я нашел хороший пост в блоге, объясняющий эту проблему:

http://omegadelta.net/2011/11/04/oh-my-god-they-killed-parentviewcontroller/

После этого поста я создал метод категории для UIViewController:

- (UIViewController*) myParentViewController {
    UIViewController* ret = [self parentViewController];
    if(ret == nil) {
        if([self respondsToSelector:@selector(presentingViewController)]) {
            ret = [self presentingViewController];
        }
    }
    return ret;
}
0 голосов
/ 27 ноября 2011

Для вашего конкретного случая использования увольнения контроллера модального представления вы можете иметь в виду второй абзац раздела Обсуждение в документации Apple для -dismissModalViewControllerAnimated:.

Родительский контроллер представления ответственен за отклонение модального контроллера представления, который он представил, используя presentModalViewController: animated: метод.Если вы вызываете этот метод на самом контроллере модального представления, однако, контроллер модального представления автоматически пересылает сообщение своему родительскому контроллеру представления.

Однако, если вы вызываете этот метод на самом контроллере модального представления,Контроллер представления автоматически пересылает сообщение в родительский контроллер представления.

Решение Джейсона также прекрасно и полезно!Спасибо!

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