Xamarin.Forms 4.にしたらGoBackAsyncでOnNavigatedToが呼ばれなくなった件
 2019年10月22日
Xamarin.iOSだけOnNavigatedTo()が呼ばれない。
Xamarin.Androidでは呼ばれてる。
Prismのisuueで過去にはそのようなバグがあったっぽいけど治ってるらしい。。
ググること数日。。。
見つけた。!∑(゜∀゜)
↓
OnNavigatedTo in Prism doesn’t trigger from one of pages
どうやら、ボタンのRendererがいけなかったらしい。
修正前
| 
					 1 2 3 4 5 6 7 8 9 10 11 12  | 
						public class MyButtonRenderer : ButtonRenderer {     public MyButtonRenderer() { }     protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Button> e)     {         base.OnElementChanged(e);         if(!string.IsNullOrEmpty(Control.TitleLabel.Text))             Control.ContentEdgeInsets = new UIEdgeInsets(Control.ContentEdgeInsets.Top, Control.ContentEdgeInsets.Left + 20, Control.ContentEdgeInsets.Bottom, Control.ContentEdgeInsets.Right + 20);     } }  | 
					
修正後
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20  | 
						public class MyButtonRenderer : ButtonRenderer {     public MyButtonRenderer() { }     protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Button> e)     {         base.OnElementChanged(e);         if (e.OldElement != null)         {             // unhook event handlers etc here         }         if (e.NewElement != null)         {             if (!string.IsNullOrEmpty(Control.TitleLabel.Text))                 Control.ContentEdgeInsets = new UIEdgeInsets(Control.ContentEdgeInsets.Top, Control.ContentEdgeInsets.Left + 20, Control.ContentEdgeInsets.Bottom, Control.ContentEdgeInsets.Right + 20);         }     } }  | 
					
e.NewElement != nullの時に処理するようにしないと、ナビゲーションスタックからポップされてもRendererが動いちゃって、メモリにインスタンスが残り、その場合はNabigatedToが呼ばれないとのことらしい。
Rendererの実装では、そうゆう風にしてたんだけどこのソースだけやってなかった。(-_-;)
NMackay氏は神だ。