iOS7 раскадровка изображений не работает:(
Я пытаюсь настроить imagePicker
в новом проекте iOS7 Xcode, использующем раскадровки, но не могу найти никаких примеров в Интернете, пока не найду следующий код.
Я настроил его так, чтобы при нажатии кнопки он использовал модальное нажатие, чтобы перейти к виду, который имеет класс "UIImagePickerController"
который, по-видимому, вызывает в коде выбора изображений.
Однако, когда приложение запускается, оно ничего не загружает после нажатия на кнопку, чтобы позволить приложению получить доступ к вашим фотографиям, есть ли шанс какой-нибудь помощи, пожалуйста?
Снимок экрана с ошибкой: https://pbs.twimg.com/media/Bdy7v9JCAAABpvS.jpg:large
настройка интерфейса:
@interface ridecount_AddRide_ViewController : UIViewController<UIImagePickerControllerDelegate, UINavigationControllerDelegate>{
код:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
UIImagePickerController *controller = [segue destinationViewController];
controller.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
controller.delegate = self;
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
[self dismissViewControllerAnimated:YES completion:nil];
}
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
[self dismissViewControllerAnimated:YES completion:nil];
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
[[self.view viewWithTag:100023] removeFromSuperview];
UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(320/2-200/2, 10, 100, 100)];
imageView.tag = 100023;
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.image = image;
[self.view addSubview:imageView];
}
4 ответа
Инициализировать контроллер UIImagePickerController *controller = [[segue destinationViewController] init];
Для SWIFT - немного другой подход
//Init property
var imagePicker = UIImagePickerController()
затем назначьте
override func prepareForSegue(segue:UIStoryboardSegue!, sender: AnyObject!)
{
imagePicker = segue.destinationViewController as UIImagePickerController
imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
imagePicker.allowsEditing = false
imagePicker.delegate = self
}
У меня такая же проблема. UIImagePickerController
объект, который был инициализирован из раскадровки, работал правильно только тогда, когда availableMediaTypesForSourceType
был установлен на UIImagePickerControllerSourceTypeCamera
,
Если вы хотите сохранить prepareForSegue:
Функциональность вы можете удалить UIImagePickerController
из раскадровки и создайте его программно, используя следующий код:
- (void)showCameraRollController
{
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
UIStoryboardSegue *segue = [UIStoryboardSegue segueWithIdentifier:@"CameraRollController" source:self destination:imagePickerController performHandler:^{
[self presentViewController:imagePickerController animated:YES completion:NULL];
}];
[self prepareForSegue:segue sender:self];
[segue perform];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"CameraRollController"]) {
UIImagePickerController *imagePickerController = [segue destinationViewController];
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePickerController.delegate = self;
}
}
Возможно, другой альтернативой является создание подкласса UIImagePickerController и добавление в подкласс:
- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
return [super init];
}
Казалось, работает.