UIImagePickerController не загружается в viewDidLoad для iPhone SDK
-
18-09-2019 - |
Вопрос
Я пытаюсь показать UIImagePickerController, как только загрузится один из моих контроллеров представления.Я бы хотел, чтобы пользователю не приходилось нажимать кнопку, поэтому я переопределил метод viewDidLoad следующим образом:
- (void)viewDidLoad {
[super viewDidLoad];
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePickerController.allowsImageEditing = YES;
imagePickerController.delegate = self;
[self presentModalViewController:imagePickerController animated:YES];
[imagePickerController release];
}
Это компилируется и запускается, однако, когда контроллер представления загружен, средство выбора изображения не отображается.Этот код работает нормально, если я прикреплю его, например, к событию кнопки.Есть идеи?
Спасибо.
Решение
У меня была такая же проблема, но я ее решил.Попробуйте использовать
-(void) awakeFromNib {
}
Он загрузится сразу после загрузки всего остального.
Другие советы
Попробуйте вставить код
-(void)viewDidAppear
Однако это запускается даже каждый раз, когда представление появляется на экране (в том числе, когда оно появляется после закрытия UIImagePicker), поэтому вам, возможно, придется добавить значение BOOL, чтобы это происходило только при первом появлении или когда вы этого хотите ( то естьне после отклонения модального представления).
Кажется, что viewDidLoad еще слишком рано использовать PresentModalViewController:animated:.Я бы предложил использовать одноразовый таймер для вызова метода из следующей итерации цикла выполнения:
[NSTimer
scheduledTimerWithTimeInterval:0
target:self
selector:@selector(onLoadTimer:)
userInfo:nil
repeats:NO];
добавьте следующий метод:
- (void)onLoadTimer:(id)unused
{
[self presentModalViewController:imagePickerController animated:YES];
[imagePickerController release];
}