UIImagePickerController в раскадровке: UIImagePickerControllerSourceTypePhotoLibrary отображает черный экран

У меня есть раскадровка, где я создал UINavigationController экземпляр и установите его пользовательский класс UIImagePickerController,

Если я установлю imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera в prepareForSegueвсе работает нормально.

Если я установлю imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary в prepareForSegue, Я получаю в основном черный экран с пустой серой полосой сверху, которую я не могу отклонить:

[будущее расположение скриншота - я не могу публиковать изображения]

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

РЕДАКТИРОВАТЬ: коллега комментирует, что это может быть новой проблемой для ios7

Код ниже не работает, если переход запускается раскадровкой

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSAssert([segue.destinationViewController isKindOfClass:[UIImagePickerController class]], @"Destination VC should be UIImagePickerController");

    UIImagePickerController *imagePicker = (UIImagePickerController*) segue.destinationViewController;

    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    imagePicker.allowsEditing = YES;
    imagePicker.delegate = self;

}

2 ответа

Решение

Этот вопрос является дубликатом средства выбора изображений раскадровки iOS7:(

Ответ там:

Инициализировать контроллер UIImagePickerController *controller = [[segue destinationViewController] init];

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

Определенно странно. Единственное решение, которое я нашел до сих пор, здесь: /questions/17654909/ios7-raskadrovka-izobrazhenij-ne-rabotaet

Вы должны вручную инициировать UIImagePickerControllerInstance по той же причине. Я предполагаю, что с методом initWithCodec в UIImagePicker есть что-то необычное, но трудно сказать без доступа к исходному коду (оу, спасибо Apple...).

PS Убедитесь, что вы также используете правильный тип segue. UIImagePickerController требователен к отображению каждого режима. "Камера" может быть модальной или поповерной (рекомендуется модальная). ФотоБиблиотека ДОЛЖНА отображаться с помощью всплывающего окна.

Другие вопросы по тегам