Xamarin.Forms では、NavigationPage(new Firstpage())
でページを呼び出すと、Navigation.PushAsync(new SecondPage())
でナビゲーションすることができます。PrepareForSegue
や StartActivity
は当たり前ですが使いません。
データの受け渡しについては引数でもデータを渡せるようですので、メモとして残します。簡単な実装なら引数で渡してしまえばいいし、ちゃんと組むなら MVVM で。という感じでしょうか。
var editorName = new Entry { Keyboard = Keyboard.Text, Placeholder = "Input your name.", }; var editorAge = new Entry { Keyboard = Keyboard.Numeric, Placeholder = "Input your age.", }; var button = new Button { Text = "Push me", HorizontalOptions = LayoutOptions.Fill, }; button.Clicked += (sender, e) => { string[] yourData = { editorName.Text, editorAge.Text }; Navigation.PushAsync(new SecondPage(yourData)); };
Android の EditText、iOS の Text Field に相当する Entry の Text を引数として次のページに渡してみました。
public SecondPage(string[] str) { this.Content = new Label { Text = "Your name is " + str[0] + " Your age is " + str[1], VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.Center }; }
一応データの受け渡しが出来てます。
いいのかな…
xamarin-forms/XamarinForms_Navigation at master · ytabuchi/xamarin-forms にアップしておきましたので、こうじゃね?ってのが分かる方は是非教えて下さい><
2014/6/27 追記
増田さん にコメントいただきました。しっかりやる場合は当然 MVVM でやった方が良いとのこと。
@ytabuchi https://t.co/1L715rsx3S こんな感じでどうでしょう?
App.Model をひとつだけにして、First/Second に取り回すパターン。SetBinding のところは XAML で書くともう少し楽になります。
— Tomoaki Masuda (@moonmile) 2014, 6月 26
xamarin-forms/XamarinForms_NavigationMvvm at master · moonmile/xamarin-forms -- XAML バージョンを追加。こっちのほうが解りやすいと思う。 https://t.co/1L715rsx3S
— Tomoaki Masuda (@moonmile) 2014, 6月 26
以上です。