階層のマスタなどを選択して行って、最後の階層で選択を確定した場合に、複数画面戻る機能を実装したいと考えています。

とりあえず今は下のように書いてしまっています。

```

    // 3画面戻る
    Navigation.PopAsync(false).Wait(1);
    Navigation.PopAsync(false).Wait(1);
    Navigation.PopAsync(false).Wait(1);
    
```

もっとうまいやり方がありそうな気がしているのですが、、ご存知の方がいらっしゃれば教えてください。
CC BY-SA 3.0
2018-03-12T17:12:41.737
42359
2018-03-13T02:13:29.803
27715
question
xamarin
Xamarinでボタンを押した時に複数画面戻る方法
基本的には`Navigation.PopAsync()`3回で問題ありませんが、`Task.Wait(1)`では完了が保証されないため、単に`Wait()`とするか

```

    async void SomeMethod() // asyncを付加する
    {
        await Navigation.PopAsync(false);
        await Navigation.PopAsync(false);
        await Navigation.PopAsync(false);
    }
    
```

のように非同期メソッド化すべきです。

また遷移対象がルートページであれば、`PopToRootAsync`が使用できます。

もしくは事前に履歴を削除しておくこともできます。

```

    void SomeMethod()
    {
        Navigation.RemovePage(Navigation.NavigationStack[Navigation.NavigationStack.Count - 2]);
        Navigation.RemovePage(Navigation.NavigationStack[Navigation.NavigationStack.Count - 2]);
        Navigation.PopAsync(false);
    }
    
```
CC BY-SA 3.0
2018-03-13T02:13:29.803
42361
2018-03-13T02:13:29.803
5750
42359
answer