Как запустить iPhone Camera на viewDidLoad? - PullRequest
4 голосов
/ 31 августа 2009

Я не могу запустить камеру при загрузке моего обзора. В итоге я заставляю пользователя искать и нажимать кнопку на экране, чтобы загрузить камеру (избыточно). Как я могу это сделать? Код следует:

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {

    self.imgPicker = [[UIImagePickerController alloc] init];
    self.imgPicker.allowsImageEditing = NO;
    self.imgPicker.delegate = self;
    self.imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera;

    [super viewDidLoad];

    [self presentModalViewController:self.imgPicker animated:YES];

}

UPDATE:
размещение приведенного выше кода в -viewDidAppear: (BOOL) анимированный позволил запустить камеру, но приложение сразу же аварийно завершило работу с последней подпрограммой [UIWindowController transitionViewDidComplete: fromView: toView]; (цитируется отладчиком)

Ответы [ 2 ]

4 голосов
/ 31 августа 2009

Вы должны сделать это в viewWillAppear: или viewDidAppear: если первый не работает. Попытка сделать это в viewDidLoad не будет работать, потому что она вызывается после того, как представление впервые создано, и представление не является подчиненным ни к чему другому в этой точке. Насколько я понимаю, для того, чтобы вызывать presentModalViewController на себя, представление должно на некотором уровне отображаться в окне UIWindow.

Еще одна вещь, которую я только что заметил; ваш код теряет память в зависимости от того, как вы объявляете свойство imgPicker. если он объявлен с помощью retain вместо assign, то, если вы явно не отпустите его где-нибудь дважды, этот сборщик всегда будет существовать в памяти. В этом случае вы должны автоматически высвобождать объект init'd, назначая его свойству.

0 голосов
/ 31 августа 2009

Похоже, что он не делает этого, когда вы помещаете вызов для представления модального представления в представлении загрузил. Вы можете попробовать использовать 2-секундный таймер после вызова [super viewDidload], который добавляет представление выбора или что-то в этом роде.

...