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 требователен к отображению каждого режима. "Камера" может быть модальной или поповерной (рекомендуется модальная). ФотоБиблиотека ДОЛЖНА отображаться с помощью всплывающего окна.