在MonoTouch中,视图控制器之间传递数据的最佳方法是什么?(缓存数据)

4
我正在重写一个之前用Objective-C编写的应用程序。在Objective-C中,我会将数据(5个数组)存储在单独的NSUserdefaults中,然后在新的ViewController中调用它们。
自从我开始使用MonoTouch编程以来,这种做法感觉有点不对。现在我也在使用共享代码,并创建了一个类来获取数据。让我解释一下我的应用程序如何工作:
1.用户输入数字到文本字段中。 2.现在这个数字被发送到一个类中,该类将获取并过滤数据。完成后,它将返回5个数组/列表。 3.现在我需要保存或传递数据,并推送到下一个ViewController,在那里数据将显示在标签中。
那么,最好的解决方法是什么?

你可以给你的“Label-VC”添加属性来保存这些数组,在显示视图控制器之前设置它们,这样怎么样? - Tobi
1个回答

2

子类化ViewController,在其构造函数中添加一些新的参数以传递数据,这样当您显示它时就可以将数据传递给控制器。

public class MyViewController : UIViewController
{
    private MyData _myData;

    public MyViewController(MyData myData)
    {
        _myData = myData;
    }
}

然后使用它:

(假设我们已经在另一个拥有NavigationController的视图控制器中):

var myViewController = new MyViewController(myData);
this.NavigationController.PushViewController(myViewController, true);

或者(作为“模态”)
var myViewController = new MyViewController(myData);
this.PresentViewController(myViewController, true);

我同意@NovaJoe的观点,只想补充一下,如果是从Storyboard来的话,您可以将_myData设置为公共的,并且只需从MyViewController实例对象设置它。 - Jorge Wander Santana Ureña
完全同意。在这里使用属性也可以,而不是构造函数参数。 - NovaJoe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接