首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从另一个UILabel更新ViewController

从另一个UILabel更新ViewController
EN

Stack Overflow用户
提问于 2013-08-20 15:52:51
回答 2查看 377关注 0票数 0

对于Xamarin和iOS来说,这可能是个愚蠢的问题:

基本上,我有一个UITabBarController,NewGameScreen.cs (带有NewGameScreen.designer.cs和NewGameScreen.xib),而作为选项卡之一,我有StatsScreen.cs (带有StatsScreen.designer.cs和StatsScreen.xib)。StatsScreen有一些我想从NewGameScreen修改的标签,所以我创建了一个新的StatsScreen对象:

代码语言:javascript
复制
StatsScreen stats = new StatsScreen ();

然后,我调用这样的方法:

代码语言:javascript
复制
stats.setStats (day, debt, money, bank, health, location); // All of the parameters here are local variables

该方法如下所示:

代码语言:javascript
复制
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系统。

致以亲切的问候。链接到完整的项目代码

谢谢你的帮助。:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-21 11:50:25

"Object not“可能是由于很多原因造成的。我强烈建议在代码中找出它抛出异常的位置?你做了setStats方法,它在那里的错误?可能的错误有:

  • 其中一个标签没有正确映射到一个出口,这就是抛出一个错误。要解决这个问题,请在方法中放置一个调试器断点,并在所有label属性上鼠标,确保它们不是null。这让我有好几次了。
  • 传入的变量为null,调用ToString()将引发异常(但不太可能,因为您拥有所有的值类型)。
  • 代码中的其他地方正在抛出一些无关的错误。
票数 0
EN

Stack Overflow用户

发布于 2013-08-21 17:42:02

您是否使用Xcode来设计接口,而这些元素是连接到UI的出入口?

然后问题很简单:在调用ViewDidLoad方法之前,这些元素在创建对象时将为null。也就是设置值的时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18339619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档