Monotouch设置属性不保留属性值

时间:2012-05-27 15:58:53

标签: c# iphone uitableview xamarin.ios monodevelop

我正在尝试做一些非常简单的事情,但我无法弄清楚为什么它不起作用。在我的MonoDevelop项目中,我有一个iPhone应用程序。我有两种不同的看法。每个视图都包含一个UITable。对于视图1,我将类1连接到UITable作为数据源1.对于视图2,我将类2连接为数据源2.两个类(即数据源)都为表提供数据。 View 2也有一个自定义单元格,因此加载异步。

我使用linq到xml从2个xml文件中获取数据。一切正常,数据加载很好。我需要知道的是根据View 1中的选择在Datasource 2中加载数据。为此,我需要将ID从视图1传递给Class(Datasource)2。问题。

我已经尝试过我所知道的一切,但我无法做到。

根据我的正确解决方案:

我创建了另一个名为SelectedRound的类,它有两个属性。代码:

使用System;

namespace xxxxx
{
    public class SelectedRound
    {
        public string RoundID { get; set; }
        public string Date { get; set; }
    }
}

当我在类1中设置RoundID时,我可以在类1中访问它。尝试在类2中访问它但是,不返回任何内容或返回null。为什么会这样?可能是因为Class(Datasource)2是异步加载的吗?我应该以某种全局方式实例化SelectedRound类吗?如果是这样的话? AppDelegate可能吗? (努力做到这一点)

任何帮助都可以。对于我来说,试图设置并获得一个简单的字符串变量似乎没有意义。

提前致谢。 Ĵ

1 个答案:

答案 0 :(得分:1)

这感觉就像你将SelectedRound实例从第一个视图传递到第二个视图一样。

作为一种非常快速和肮脏的解决方案,您可以使用单例或只使用静态类:

public static class SelectedRound
{
    public static string RoundID {get;set;}
    public static string Date {get;set;}
}

对于更复杂的模式,然后尝试覆盖两个视图控制器中的一个或两个的构造函数,以便为它们传递非静态类的共享实例。

视图控制器现在可能对你感到陌生 - 但它们只是c#类 - 所以可以通过编写覆盖,新方法和属性来扩展它们。