正在从另一个ViewController更新UILabel
本文关键字:更新 UILabel ViewController 另一个 | 更新日期: 2023-09-27 18:28:19
Xamarin和iOS的新手,所以这可能是一个愚蠢的问题:
基本上,我有一个UITabBarController,NewGameScreen.cs(带有NewGameScree.designer.cs和NewGameScrEE.xib),作为其中一个选项卡,我有StatsScreen.cs(具有StatsScreen designer.cs和StatsScreer.xib)
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应该不难。
本质上,我有一个选项卡控制器(NewGameScreen),其中有3个选项卡。我希望选项卡控制器管理3个子视图(选项卡),因为我需要在3个屏幕之间共享数据,并认为拥有一个监督类将是有益的,这样,如果我在NewGameScreen中设置一些变量,我可以更新3个子视图中的每一个(其中一个是StatsScreen)。
你建议我怎么做,我觉得我误解了ViewController系统。
致以亲切的问候。链接到完整的项目代码
谢谢你的帮助。:)
"Object not set"可能是由于很多原因造成的。我强烈建议您弄清楚它在代码中的何处引发异常?你是否使用了setStats方法,它在其中出错?可能的错误有:
- 其中一个标签没有正确映射到出口,这引发了一个错误。要弄清楚,请在方法中放置调试器断点,并将鼠标悬停在所有标签属性上,确保它们不为null。这已经让我有好几次了
- 传入的变量为null,调用
ToString()
会引发异常(但不太可能,因为您拥有所有值类型) - 从代码中的其他地方抛出了一些不相关的错误
您是否使用Xcode来设计接口,而这些元素是连接到UI的出口?
那么问题很简单:从创建对象到调用ViewDidLoad方法,这些元素都将为null。此时将设置值。