【发布时间】:2013-08-20 15:52:51
【问题描述】:
Xamarin 和 iOS 的新手,所以这可能是一个愚蠢的问题:
基本上,我有一个 UITabBarController、NewGameScreen.cs(带有 NewGameScreen.designer.cs 和 NewGameScreen.xib),作为选项卡之一,我有 StatsScreen.cs(带有 StatsScreen.designer.cs 和 StatsScreen.xib)。 StatsScreen 有一些我想从 NewGameScreen 修改的标签,所以我创建了一个新的 StatsScreen 对象:
StatsScreen stats = new StatsScreen ();
然后我这样调用一个方法:
stats.setStats (day, debt, money, bank, health, location); // All of the parameters here are local variables
方法如下:
public void setStats (int day, long debt, long money, long bank, int health, string location)
{
LabelDay.Text = day.ToString ();
LabelDebt.Text = debt.ToString ();
LabelMoney.Text = money.ToString ();
LabelBank.Text = bank.ToString ();
LabelHealth.Text = health.ToString ();
LabelLocation.Text = location;
}
当我运行并点击时,我得到:
抛出了 System.NullReferenceException。对象引用未设置为对象的实例。
我尝试过改变事物,调用不同的方法序列,但我似乎只能从它所在的类 StatsScreen 中调用 setStats。
我一定是犯了一个致命错误,像这样更新 UILabel 应该不难。
基本上,我有一个带有 3 个选项卡的选项卡控制器(NewGameScreen)。我希望选项卡控制器管理 3 个子视图(选项卡),因为我需要在 3 个屏幕之间共享数据,并认为拥有一个监督类将是有益的是,如果我在 NewGameScreen 中设置一些变量,我可以更新 3 个子视图中的每一个(其中一个是 StatsScreen)。
你会建议我怎么做,我觉得我对 ViewController 系统有误解。
亲切的问候。 Link to full project code
感谢您的帮助。 :)
【问题讨论】:
-
首先,您正在尝试更新视图的新实例,而不是(可能)已经存在的实例。您需要获取对已经存在的视图的引用并公开允许您访问它的控件的属性或方法。
-
我明白了,谢谢你的提示,我会尝试纠正这个问题。欣赏它。
-
如果我正确理解了您的示例,StatsScreen 继承自 UIViewController,对吗?如果是这样,您将实例化它并添加到 UITabBarController 父实例;在内部,框架根据默认代码实例化底层视图。
标签: c# xamarin.ios xamarin