テーブルソースクラスがあり、行をクリックすると、下の関数を呼び出して別のコントローラーに移動しますが、データを渡したいです。
controller.PerformSegue("backtorootviewsague",controller);
どうすればそれを達成できるか知っていますか?私はモノタッチとiOSの初心者です。これを達成する方法がわかりません。
テーブルソースクラスがあり、行をクリックすると、下の関数を呼び出して別のコントローラーに移動しますが、データを渡したいです。
controller.PerformSegue("backtorootviewsague",controller);
どうすればそれを達成できるか知っていますか?私はモノタッチとiOSの初心者です。これを達成する方法がわかりません。
PrepareForSegue
それを行うのに適切な場所です。たとえば、作成するコントローラー
CustomerViewController
が呼び出された場合、次のようにそのメソッドCustomerListViewController
でオーバーライドします。CustomerListViewController
public override void PrepareForSegue (UIStoryboardSegue segue, NSObject sender)
{
base.PrepareForSegue (segue, sender);
// do first a control on the Identifier for your segue
if (segue.Identifier.Equals("your_identifier")) {
var viewController = (CustomerViewController)segue.DestinationViewController;
viewController.MyData = dataToInject;
}
}
ここCustomerViewController
に次のような公共の財産があります:
public SomeTypeData MyData { get; set; }
これは、 Xamarinサンプルで実際に動作していることがわかります。
お役に立てば幸いです。
私は次のように解決しました:(Visual Studio / Xamarin-iOS / C#)
public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender)
{
base.PrepareForSegue(segue, sender);
if (segue.Identifier.Equals("my Segue ID"))
{
var viewController = (MyDestinationViewController)segue.DestinationViewController;
viewController.selectedItemInDestinationController = selectedControlStringFromViewController;
}
}
セグエを実行する:
this.PerformSegue("my segue ID", this);
Destination ViewControllerで、次を追加します。
public string selectedControlName;
protected ControlShowController(IntPtr handle) : base(handle)
{
}