0
我有一個設置查看更改個人資料照片,以及封面圖片, 我把它設置是這樣的:UIImagePicker只出現一次
- (IBAction)coverPressed:(id)sender
{
buttonPressed = 1;
if (self.image == nil) {
self.imagePicker = [[UIImagePickerController alloc] init];
self.imagePicker.delegate = self;
self.imagePicker.allowsEditing = NO;
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
[self performSelector:@selector(takePhoto) withObject:nil];
} else {
[self performSelector:@selector(chooseFromLibrary) withObject:nil];
}
self.imagePicker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:self.imagePicker.sourceType];
[self presentViewController:self.imagePicker animated:NO completion:nil];
}
}
- (void) avatarPressed:(id)sender
{
buttonPressed = 2;
if (self.image == nil) {
self.imagePicker = [[UIImagePickerController alloc] init];
self.imagePicker.delegate = self;
self.imagePicker.allowsEditing = NO;
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
[self performSelector:@selector(takePhoto) withObject:nil];
} else {
[self performSelector:@selector(chooseFromLibrary) withObject:nil];
}
self.imagePicker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:self.imagePicker.sourceType];
[self presentViewController:self.imagePicker animated:NO completion:nil];
}
}
-(void)takePhoto
{
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 presentViewController:imagePickerController animated:YES completion:nil];
}
-(void)chooseFromLibrary
{
UIImagePickerController *imagePickerController= [[UIImagePickerController alloc]init];
[imagePickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
// image picker needs a delegate so we can respond to its messages
[imagePickerController setDelegate:self];
// Place image picker on the screen
[self presentViewController:imagePickerController animated:YES completion:nil];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
if (buttonPressed == 2) {
[self dismissViewControllerAnimated:YES completion:nil];
image = [info objectForKey:UIImagePickerControllerOriginalImage];
avatar = [image thumbnailImage:200 transparentBorder:0 cornerRadius:0 interpolationQuality:kCGInterpolationMedium];
avatarSmall = [image thumbnailImage:40 transparentBorder:0 cornerRadius:0 interpolationQuality:kCGInterpolationMedium];
}
if (buttonPressed == 1) {
[self dismissViewControllerAnimated:YES completion:nil];
image = [info objectForKey:UIImagePickerControllerOriginalImage];
cover = [image thumbnailImage:320 transparentBorder:0 cornerRadius:0 interpolationQuality:kCGInterpolationMedium];
}
}
但是,如果我按「變更資料圖片」 UIButton並選擇一個圖像,我不能再按下「更改封面圖片」或者反之亦然,在我的代碼中是否有什麼錯誤使它只出現一次?
嗯,你的按鈕邏輯只是做的東西,如果'self.image == nil'但圖像選擇器返回後,你設置'self.image',對?如果你想讓這些按鈕繼續工作,那麼刪除'nil'檢查? – bgfriend0
@ bgfriend0哦,上帝,我現在覺得自己很愚蠢,這就是我在接下來的教程中得到的結果!謝謝! –