2016-07-28 4 views
1

ボタンをクリックするとiPhoneシミュレータでギャラリーを開きます。 私はXamarinフォーム - xamlを使用してページとイメージビューを作成しています。私がこれまで実施してきた何画像タップのシミュレータで開いているギャラリー

は、私は、メソッドselectImageを持つIGalleryServiceを実装のiOS固有のGalleryServiceを持っています。 selectImageは、UIImagePickerController _imagePickerを作成します。 iOSの特定のアプリで

、私はちょうど

NavigationController.PresentModalViewController(_imagePicker, true); 

しかし、どのようにxamarinフォームでのナビゲーションを使用して同様の何かをするのだろうか?

PS:私はの.xamlファイルにビューを作成し、ここで

Navigation.PushModalAsync(page) 

のようなファイルxaml.cs内のページ間を移動している、基本的には右、_imagePickerビューが含まれている必要がありますページ?どうやってするか? 私が間違っている場合、親切に私を修正してください。

答えて

1

Xamarin.Formsは実際にiOS上の単一のNavigationControllerを使用して、すべての異なるページをホストします。 Xamarin Content Pagesのすべてのナビゲーションは、メインのNavigationController内でXF内部で実行されます。

NavigationPageスタック内に他のネイティブビューコントローラを混在させることはできません。しかし、通常のネイティブコードをすべて使用して、フォームを使用する1つのNavigationControllerを1つの「スクリーン」として扱うことができます。 iOSのネイティブプロジェクト内

、あなたは、XFのビューコントローラにアクセスするために

var topController = UIApplication.SharedApplication.KeyWindow.RootViewController; 
while (topController.PresentedViewController != null) { 
    topController = topController.PresentedViewController; 
} 
topController.PresentViewController (_imagePicker, true, null); 

を使用しますが、「ネイティブ」のiOSアプリでモーダルビューを提示するだろう好きでトップ1と用途を見つけることができます。

"LoadApplication"が終了するまで、このRootViewControllerはnullになるので、実行中のアプリケーションからこのアクションを起動し、起動時にすぐには起動しない場合は常に呼び出しが行われるようにしてください。

PCLを使用している場合は、共有コードからこの呼び出しをトリガするためのDependencyServiceのフォームが必要です。共有コードに結果を戻すには、ネイティブアプリにもう少し論理が必要な場合があります。また、AndroidやUWPなど、アプリでターゲティングしている可能性のある他のプラットフォームでもこれを再実装する必要があります。

+0

ありがとうございます。それを試してみましょう。 :) –

+0

私はこの警告を表示しています:ビューは、ウィンドウ階層内にないを提示しよう! –

+0

のように見えますが、実際に呼び出す必要がある実際のUINavigationControllerへの参照はありません。ここで受け入れられた答えを見てくださいhttp://stackoverflow.com/questions/29912739/how-to-show-ios-add-contact-screen-from-xamarin-formsそれがあなたに役立つかどうかを参照してください。 – irreal

関連する問題