2016-07-28 102 views
1

我想在按鈕單擊後在iPhone模擬器中打開圖庫。 我使用Xamarin表單 - xaml來創建頁面和圖像視圖。在模擬器上打開圖庫的圖片水龍頭

我到目前爲止所實現的內容: 我有一個特定於iOS的GalleryService,它實現了具有selectImage方法的IGalleryService。 selectImage創建一個UIImagePickerController _imagePicker。

在iOS系統中特定的應用程序,我只想做

NavigationController.PresentModalViewController(_imagePicker, true); 

但如何做xamarin形式使用導航類似的東西?

PS:我在的.xaml文件創建的視圖和跨頁移動在xaml.cs文件中像

Navigation.PushModalAsync(page) 

這裏,頁面必須基本上包含_imagePicker看法,對不對?怎麼做? 如果我錯了,請糾正我。

回答

1

Xamarin.Forms實際上利用iOS上的單個NavigationController來託管所有不同的頁面。所有Xamarin內容頁面導航都在XF內部發生,位於單個主NavigationController內部。

您不能在NavigationPage堆棧中混合其他本機視圖控制器。但是,您可以使用通常所需的所有本地代碼,並將表單使用的一個NavigationController作爲單個「屏幕」使用。

裏面的iOS原生的項目,你可以使用

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

訪問XF的視圖控制器,發現最上面的一個和使用,像你在一個「原生」的iOS應用呈現模式的看法。

請注意,在「LoadApplication」完成之前,此RootViewController將爲空,因此請確保在此之後進行了任何調用,如果從正在運行的應用程序觸發此操作並且不是在啓動時立即啓動,則應該始終如此。

如果使用PCL,您需要某種形式的DependencyService來從您的共享代碼中觸發此調用,並且您可能需要在本機應用程序中使用更多邏輯才能將結果返回到共享代碼中。您還需要在可能針對您的應用定位的任何其他平臺上重新實現此功能(例如Android或UWP)。

+0

謝謝你的解釋。讓我嘗試一下,然後回來。 :) –

+0

我得到這個警告:嘗試呈現其視圖不在窗口層次結構! –

+0

看起來像沒有給我們提到你應該調用的實際UINavigationController。看看在這裏接受的答案http://stackoverflow.com/questions/29912739/how-to-show-ios-add-contact-screen-from-xamarin-forms看看是否可以幫助你。 – irreal