4

ビューをロードするときにカメラを起動できないようです。カメラをロードするためだけに、ユーザーが画面上のボタンを見つけて押す必要があるようにします(冗長)。これどうやってするの?コードは次のとおりです。

// 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];

}

更新:
上記のコードを -viewDidAppear:(BOOL)animated に配置すると、カメラを起動できましたが、アプリは直後にクラッシュし、最後のルーチンは [UIWindowController transitionViewDidComplete:fromView:toView]; でした。(デバッガーによる引用)

4

2 に答える 2

4

最初の方法が機能しない場合は、viewWillAppear: または viewDidAppear: で行う必要があります。ビューが最初に作成された後に呼び出され、その時点でビューは他のもののサブビューではないため、viewDidLoadでそれを実行しようとしても機能しません。私が理解している限り、presentModalViewControllerを自分で呼び出すには、ビューを何らかのレベルでUIWindowに表示する必要があります。

私が気づいたもう1つのこと。imgPicker プロパティの宣言方法によっては、コードでメモリ リークが発生します。assignの代わりにretainで宣言されている場合、どこかで明示的に2回解放しない限り、そのピッカーは常にメモリ内に存在します。その場合、プロパティに割り当てるときに、初期化されたオブジェクトを自動解放する必要があります。

于 2009-08-31T04:59:46.053 に答える
0

present modal view in view did load への呼び出しを入れると、それは行わないようです。[super viewDidload] を呼び出した後、ピッカー ビューをプッシュするなどの 2 秒のタイマーを試すことができます。

于 2009-08-31T04:47:53.020 に答える