簡體   English   中英

如何回到Xamarin.IOS中的上一個ViewController

[英]How to go back to previous ViewController in Xamarin.IOS

我在Visual Studio Xamarin( 不是Xamarin.Forms )中使用兩個視圖控制器制作了一個應用程序。 第一個視圖控制器是項目列表,第二個包含項目的詳細信息。 當用戶點擊列表中的項目時,第二個視圖將打開並顯示代碼

DetailViewController detailController = this.Storyboard.InstantiateViewController("DetailViewController") as DetailViewController;
detailController._idx = idx;
this.NavigationController.PushViewController(detailController, true);

但是我不知道如何以編程方式返回到第一個ViewController-例如,在DetailViewController上有“ Go Back”按鈕,我嘗試使用此代碼:

backButton.TouchUpInside += (s,e) => {
  this.NavigationController.DismissViewController(true, null)
};

但這沒有任何結果。 有人可以幫我嗎?

更新

我將代碼更改為:

backButton.TouchUpInside += (s,e) => {
  this.NavigationController.DismissViewController(true, async () => { await DismissViewControllerAsync(true); });
  ListViewController listController = this.Storyboard.InstantiateViewController("ListViewController ") as ListViewController;
  this.NavigationController.PresentViewController(listController, true, null);
} 

這適用於“返回”,但是當我嘗試在列表中選擇相同或另一個項目並打開新的DetailViewController時,它會拋出異常“ System.NullReferenceException:對象引用未設置為對象的實例”

this.NavigationController.PushViewController(detailController, true);

(詳細信息-我運行應用程序,打開ListViewController,選擇item1,打開DetailViewController,點擊BackButton,打開ListViewController,選擇任何項目,異常)

您混合了“ Push,Pop和“ Present,Dismiss

將viewcontroller放置在Navigation中時,應使用push和pop來控制堆棧。

修改您的代碼:

backButton.TouchUpInside += (s,e) => {
  this.NavigationController.PopViewController(true); 
} 

參考

呈現視圖控制器

UINavigationController

如果您需要“后退”按鈕來自動出現,則需要從導航控制器開始,然后從那里打開一個viewcontroller ...

在此鏈接中查看更多信息: https : //developer.xamarin.com/guides/ios/getting_started/hello,_iOS_multiscreen/hello,_iOS_multiscreen_quickstart/

否則,您需要做一個butten,只需使用與以前相同的方法即可!

詢問您是否不理解!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM