【问题标题】:Best way to pass data between viewcontrollers (Cache data) in MonoTouch在 MonoTouch 中的视图控制器(缓存数据)之间传递数据的最佳方式
【发布时间】:2013-04-05 08:29:00
【问题描述】:

所以我重写了一个我之前用objective-c编写的应用程序。在objective-c中,我会将数据(5个数组)存储在单独的NSUserdefaults中,然后在新的ViewController中调用它们。

自从我开始使用 MonoTouch 编程以来,这感觉有点不对劲。我现在也为此使用共享代码并创建了一个获取数据的类。让我解释一下我的应用流程是如何工作的:

  1. 用户在文本字段中输入数字。
  2. 现在这个数字被发送到类,该类将获取数据并对其进行过滤。完成的将返回 5 个数组/列表。
  3. 现在我必须以某种方式保存或传递数据并推送到下一个 ViewController,数据将显示在 Labels 中。

那么解决这个问题的最佳方法是什么?

【问题讨论】:

  • 如何在“Label-VC”中添加可以容纳这些数组的属性并在实际显示 vc 之前对其进行设置?

标签: c# ios coding-style xamarin.ios xamarin


【解决方案1】:

子类化 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,我只想补充一点,如果它来自情节提要,那么您可以将 _myData 设置为 public,然后从 MyViewController 实例对象中设置它。
  • 完全同意。这里的属性也可以,而不是构造函数参数。
猜你喜欢
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 2011-07-09
  • 2014-08-05
  • 1970-01-01
相关资源
最近更新 更多