如何从单触发中的PerformSegue传递数据

时间:2012-09-07 16:14:08

标签: c# ios ios5 xamarin.ios

我有表源类,在行上点击我调用下面的函数移动到另一个控制器,但我想传递一些数据。

controller.PerformSegue("backtorootviewsague",controller);

有谁知道如何实现它。我是monotouch和ios的新手。我无法弄清楚如何实现这一目标。

2 个答案:

答案 0 :(得分: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 samples中看到这一点。

希望有所帮助。

答案 1 :(得分: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;
            }
        }

执行Segue:

this.PerformSegue("my segue ID", this);

在目标ViewController上,添加:

public string selectedControlName;

protected ControlShowController(IntPtr handle) : base(handle)
{

}