1

特定のView ControllerをロードするたびにiPhoneカメラを開こうとしています。ただし、一度しか開かず、ビューコントローラーを再度ロードしてもカメラは開きません。ビューコントローラーに入るたびにカメラを開くにはどうすればよいですか?

  - (void)viewDidLoad {
[super viewDidLoad];


  UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
    [imagePickerController setSourceType:UIImagePickerControllerSourceTypeCamera];
}

// image picker needs a delegate,
[imagePickerController setDelegate:self];

// Place image picker on the screen
[self presentModalViewController:imagePickerController animated:YES];
}
4

4 に答える 4

1

あなたが見ればviewController life cycle、あなたはそれに気付くことができます

viewDidLoad() は、最初にロードするときに一度だけ呼び出します。その後、同じ viewController に再度切り替えると、viewDidLoad は呼び出されません。viewDidLoad を呼び出す代わりに、 を呼び出します- (void) viewWillAppear:(BOOL)animated

次に、カメラのオープニングコードを記述する必要があります

- (void) viewWillAppear:(BOOL)animated方法

これで、viewController をプッシュまたは提示するたびに、カメラが開きます。

于 2013-01-26T10:56:39.890 に答える
1

上記のコードを次のメソッドに記述します

- (void)viewDidAppear:(BOOL)animated {

}
于 2013-01-26T09:58:00.490 に答える
1

viewDidAppear:の代わりに使用したい場合がありviewDidLoadます。

于 2013-01-26T09:58:20.197 に答える
1

次のコードを記述します。

- (void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    self.actionsheet = [[UIActionSheet alloc] initWithTitle:@"" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Take Photo with Camera", @"Select from Library", nil];
    [self.actionsheet showInView:self.view];

  self.imgPicker=[[UIImagePickerController alloc] init];
  self.imgPicker.delegate=self;
  self.imgPicker.wantsFullScreenLayout = YES;
  self.imgPicker.allowsEditing=YES;

}


- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if(buttonIndex == 0)
    {
        if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
            self.imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
        else
            self.imgPicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
        [self presentViewController:self.imgPicker animated:YES completion:nil ];

        self.btnBlure.tag = 102;
    }
    else if (buttonIndex==1)
    {
        self.imgPicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
        [self presentViewController:self.imgPicker animated:YES completion:nil ];

        self.btnBlure.tag = 103;
    }
}
于 2013-01-26T09:59:27.140 に答える