2017-01-13 7 views
0

이 코드 스 니펫을 살펴 보았습니다. https://developer.xamarin.com/recipes/ios/media/video_and_photos/choose_a_photo_from_the_gallery/ 불행히도이 작업은 즉시 갤러리를로드하며 사용자에게 옵션을 제공 할 것을 고려하지 않습니다. 먼저 선택하십시오. - 사진 2을 -이 두 당신이 클릭 버튼 것이다 갤러리버튼을 클릭 할 때 갤러리에서 이미지를 선택하는 방법 (Xamarin iOS)

에서 기존 사진을 선택

1 :

나는 사용자에게 두 가지 옵션을 제공하기 위해 노력하고있어. 어떤 아이디어?

답변

0

한 가지 방법은 Prism.IPageDialogService 인 ActionSheet를 표시하여 사용자에게 선택권을 부여하는 것입니다. 대신 두 개의 버튼을 원하는 경우에

private async void PickPhoto() 
{ 
    await CrossMedia.Current.Initialize(); 

    if (!CrossMedia.Current.IsPickPhotoSupported) 
    { 
     await _dialogService.DisplayAlertAsync("Warning", "Camera not available", "OK"); 
     return; 
    } 

    _mediaFile = await CrossMedia.Current.PickPhotoAsync(); 
    if (_mediaFile == null) 
    { 
     return; 
    } 
    ImageButtonAddGroup = _mediaFile.Path; 
} 

:

private async void AddImage() // This is your method for your button 
{ 
    string chosen = await _dialogService.DisplayActionSheetAsync("Which source do you want to use?", "Cancel", null, "Camera", "Galery"); 
    if (chosen == "Camera") 
    { 
     TakePhoto(); 
    } 
    else if (chosen == "Galery") 
    { 
     PickPhoto(); 
    } 
} 

구현 TakePhoto()의 :

private async void TakePhoto() 
{ 
    await CrossMedia.Current.Initialize(); 

    if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported) 
    { 
     await _dialogService.DisplayAlertAsync("Warning", "Camera not available", "OK"); 
     return; 
    } 

    _mediaFile = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions 
    { 
     SaveToAlbum = true, 
     Directory = "Sample", 
     Name = "sample" + DateTime.Now.ToLocalTime().ToString("yyyyMMddHHmmss") + ".jpg" 
    }); 

    if (_mediaFile == null) 
    { 
     return; 
    } 

    ImageButtonAddGroup = _mediaFile.Path; 
} 

구현 PickPhoto()의 당신은 크로스 플랫폼 솔루션을 가지고 같은 것을 할도 수 하나의 경우 Prism.IPageDialogService이 필요하지 않으며 메서드 TakePhoto()PickPhoto()을 두 개의 d에 바인딩 할 수 있습니다. 다른 버튼.