我有一个功能包括以下行:
var chanceLabel : UILabel? = self.view.viewWithTag(uni_tag) as? UILabel
我的故事板是这样构建的,其中TableViewController是视图控制器的子视图。
每个机会标签都被标记,这样如果一个人的GPA达到一定水平,它就会返回一个字符串,以显示每个大学的入学机会。你可以看看例如伯克利,它是“不太可能”
目标是根据GPA动态更新标签。我把这个函数放在'viewDidAppear'中,它所做的一切都清楚了标签 - 这只适用于那些高于大学的大学 - 即使我把字符串输入其中:
chanceLabel?.text = "High"
我正在使用XCode 6.1.1,目前无法更新,因为这是我大学项目的一部分。有什么想法吗?
答案 0 :(得分:1)
表格单元格是根据数据和委托动态加载的。最重要的是,延迟加载在调用之前不会加载任何内容。我认为您的答案是需要阅读视图并查看控制器编程指南,以便您了解为什么您的观点为零。如果tableView加载了每个视图,代码将完美地工作,但你没有等待它,这不是如何将数据添加到表中。
如果改变视觉状态而不是在表格中使用代表,通过中心点将单元格移动得太低或太高,Apple会崩溃您的程序。 我知道,我在这里有点苛刻,但是我不想让你四处乱跑,以为苹果在它们不是它们时就会破坏,导致代码闻起来,这让你很难在将来答案 1 :(得分:0)
将标签放入:
解决了这个问题override func viewDidLayoutSubviews()
失败的原因是因为TableViewController是主视图(View Controller)的子视图,并且利用“viewDidAppear”仅聚焦主视图的框架。但是,在故事板设计的情况下,viewDidLayoutSubviews是更好的解决方案。