对于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;
}当我运行并单击时,我得到:
A System.NullReferenceException被抛出。对象引用未设置为对象的实例。
我尝试过改变周围的事物,调用不同的方法序列,但是我似乎只能从它驻留的类StatsScreen中调用StatsScreen。
我一定是犯了一个致命的错误,像这样更新UILabel应该不难。
本质上,我有一个带有3个选项卡的Tab控制器(NewGameScreen)。我希望Tab Controller管理3个子视图(选项卡),因为我需要在3个屏幕之间共享数据,并认为拥有一个监督类将是有益的,因此如果我在NewGameScreen中设置了一些变量,我可以更新3个子视图中的每个子视图(其中一个是StatsScreen)。
你怎么建议我这么做,我觉得我误解了ViewController系统。
致以亲切的问候。链接到完整的项目代码
谢谢你的帮助。:)
发布于 2013-08-21 11:50:25
"Object not“可能是由于很多原因造成的。我强烈建议在代码中找出它抛出异常的位置?你做了setStats方法,它在那里的错误?可能的错误有:
ToString()将引发异常(但不太可能,因为您拥有所有的值类型)。发布于 2013-08-21 17:42:02
您是否使用Xcode来设计接口,而这些元素是连接到UI的出入口?
然后问题很简单:在调用ViewDidLoad方法之前,这些元素在创建对象时将为null。也就是设置值的时间。
https://stackoverflow.com/questions/18339619
复制相似问题