2009-08-31 108 views
4

加載我的視圖時,我似乎無法啓動相機。我最終使用戶必須找到並按下屏幕上的按鈕才能加載攝像機(冗餘)。我怎樣才能做到這一點?碼如下:如何在viewDidLoad上啓動iPhone相機?

// 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]; (如調試器引用)

回答

4

你應該在viewWillAppear:或viewDidAppear中做:如果第一個不起作用。試圖在viewDidLoad中做到這一點是行不通的,因爲這是在視圖第一次創建之後調用的,並且該視圖不是此時其他任何東西的子視圖。據我瞭解,爲了在自己上調用presentModalViewController,視圖必須在UIWindow中顯示。

我剛注意到的另一件事;你的代碼泄漏內存取決於你如何聲明你的imgPicker屬性。如果它是用保留而不是分配聲明的,那麼除非你明確地將它釋放兩次,這個選擇器總是存在於內存中。在這種情況下,您應該自動釋放init'd對象,並將其分配給屬性。

+0

謝謝凱夫拉爾!你從潛在的頭痛中解救了我。 – RexOnRoids 2009-08-31 05:19:58

+0

更新: - (void)viewDidAppear:(布爾)動畫在這種情況下工作。謝謝! – RexOnRoids 2009-08-31 05:21:16

+0

更新-2:相機顯示,但我的應用程序退出:「錯誤EXC_BAD_ACCESS」 – RexOnRoids 2009-08-31 05:26:42

0

看起來,它不會這樣做,當你把調用當前模態視圖在視圖中加載。你可以嘗試在調用[super viewDidload]之後有一個2秒的定時器,這會推動picker視圖或類似的東西。

+1

計時器不會解決問題;從控制器中首次創建視圖到即將顯示視圖之間的時間可能會超過兩秒,在這種情況下,呼叫仍然不起作用。 – Kevlar 2009-08-31 05:00:49