2017-12-14 9 views
0

2つのView Controllerを持つVisualStudio Xamarin(ではなくXamarin.Forms)でアプリを作成します。最初のビューコントローラはアイテムのリストであり、2番目のアイテムはアイテムの詳細情報です。リストでユーザータップ項目は、2番目のビューは、コードXamarin.IOSで以前のViewControllerに戻る方法

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

で開きます。しかし、私はプログラム的に戻って最初のViewControllerに行く方法がわからないとき - たとえば、ボタンがDetailViewController に私が使用しようと「戻る」がありますこのコード:

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); 

(詳細 - I ru ListViewControllerが開き、ListViewControllerが開きます。例外が発生しました)

+0

を参照してください - 問題あなたは何かを探知する必要はありません。あなたはnull例外を取得します。 –

答えて

2

Push,PopPresent,Dismissが混在しています。

ナビゲーション内にビューコントローラを配置するときは、プッシュとポップを使用してスタックを制御する必要があります。

あなたのコードを変更します。

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

は、あなたがあなたのコードを更新し、今、あなたのViewControllerをを閉じ、その後、あなたは次のViewControllerに移動

Presenting a View Controller

UINavigationController

+0

ありがとうございます。しかし、PopViewController()はViewControllerを破棄しますか、以前のViewControllerに戻った後に手動で行う必要がありますか? –

+0

ポップアップが完了したら破棄されます。 –

0

「バック」ボタンが自動的に起動する必要がある場合は、ナビゲーションを開始する必要がありますコントローラ、およびそこからのViewControllerを開く...

は、このリンクで詳細を参照してください。 https://developer.xamarin.com/guides/ios/getting_started/hello,_iOS_multiscreen/hello,_iOS_multiscreen_quickstart/

そうでなければ、buttenを作成する必要があり、単純に以前のようにsameeメソッドを使用します!

ご理解いただけない場合は、お問い合わせください。

+0

あなたが推奨するポストに戻る機能については何もありません。新しいViewControllerに移動 –

+0

リンクを確認し、「戻る」を検索すると何かが得られます。ナビゲーションコントローラーとビューコントローラーの間にSequeがある場合、あるコントローラーから別のコントローラーに移動するときに、「backButten」が先頭に表示されます。 –

+0

私は、Navigation ControllerとListViewControllerの間にのみSequeを持っています。だから私はDetaIViewControllerをプログラムで呼び出すのです。 –

関連する問題