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。对象引用未设置为对象的实例。
我尝试过改变方法,调用不同的方法序列,但我似乎只能从它所驻留的类中调用setStats,StatsScreen。
我必须犯一个致命的错误,更新像这样的UILabel并不困难。
基本上,我有一个带有3个选项卡的选项卡控制器(NewGameScreen)。我希望选项卡控制器管理3个子视图(选项卡),因为我需要在3个屏幕之间共享数据,并认为有一个监督类将是如果我在NewGameScreen中设置一些变量,我可以更新3个子视图中的每一个(其中一个是StatsScreen)。
你怎么建议我这样做,我觉得我误解了ViewController系统。
亲切的问候。 Link to full project code
感谢您的帮助。 :)
答案 0 :(得分:0)
"对象未设置"可能是由于很多事情。我强烈建议弄清楚它在代码中的位置抛出异常?你是否使用setStats方法,并在那里出错?可能的错误是:
ToString()
会引发异常(因为您拥有所有值类型,所以不太可能)答案 1 :(得分:0)
您是否使用Xcode设计界面,这些元素是连接到UI的出口?
然后问题很简单:在调用ViewDidLoad方法之前,这些元素在创建对象时将为null。这是什么时候设置值。