質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

6379閲覧

Xamarin Forms ナビーゲーションページ戻るボタンイベント取得方法

ShoutaInoue

総合スコア28

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2016/11/18 10:00

お世話になっております。
Xamarin Formsにてアプリを作成しております。
質問なのですが
ナビーゲーションページ、ナビゲーションバーの戻るボタンが押下されたイベントをとる
ことはできるのでしょうか?
やりたいこととして戻るボタンが押下時にローディング画面を表示させてから、
前のページに戻りたいと思っております。

試しにOnBackButtonPressedをオーバーライドしてみたのですが、
iOSでは無効でイベントを取得することができませんでした。
またOnDisappearingで代替え使用としたのですが、
前ページ描画後に動作しているようで考えている挙動とは動作が異なりました。
助言がございましたらご回答頂けましたら幸いです。
何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

iOSでOnBackButtonPressedイベントが取れないのは結構有名な課題のようです。
まだ試したことはないのですが、リンク先の方法でNavigationPageのボタンを自力で置き換えてフックするとかすればできそうに見えます。(試したことないので時間取れたら試してみます)

https://xamarinhelp.com/xamarin-forms-back-navigation-pitfalls/

ただ、正直あまりきれいな対処方法ではない(今動いても将来の不具合の元になりそうとか。。。)と思うので、画面構成などを見直して別の手段を取れないか考えた方が良いような気がします。

###2016.11.19 0:39追記

上のサンプルを参考に、ViewModel側でバックボタンのクリックをハンドルして画面遷移の制御するコードをひとまず作ってみました。
だいぶやっつけですし、説明も後日記載すると思いますが、ひとまず参考になればこちらを見てみてください。

https://github.com/nuitsjp/XamarinSamples/tree/master/OnBackButtonPressed

PCLのSecondPageViewModelとiOSプロジェクトのCustomPageRendererがポイントです。

2016.11.20追記

ブログに詳細な実現方法と検証結果を記載しました。
よかったらご覧ください。

http://www.nuits.jp/entry/2016/11/20/185949

ただ、ブログにも記載しましたが、戻るジェスチャーを殺す必要があり、やればできるが、あまりお勧めできない。
という感じになりました。
やはり画面遷移全体を見直すことをお勧めします。

投稿2016/11/18 11:11

編集2016/11/20 10:03
nuits.jp

総合スコア346

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ShoutaInoue

2016/11/21 02:02

わかりやすい説明と解説ありがとうございます! 実際行うかどうかは少し検討しますが非常に勉強になりました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

同じタグがついた質問を見る

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。