5

テーブルソースクラスがあり、行をクリックすると、下の関数を呼び出して別のコントローラーに移動しますが、データを渡したいです。

controller.PerformSegue("backtorootviewsague",controller);

どうすればそれを達成できるか知っていますか?私はモノタッチとiOSの初心者です。これを達成する方法がわかりません。

4

2 に答える 2

11

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サンプルで実際に動作していることがわかります。

お役に立てば幸いです。

于 2012-09-07T17:23:37.067 に答える
0

私は次のように解決しました:(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)
{

}
于 2018-04-27T11:15:09.800 に答える