我已经快速编写了一个应用程序,而部分问题是它具有两个视图及其相应的视图控制器。该部分的目的是使用户单击控制器1上的某个单元格,该单元格将打开一个带有表格视图的模态视图,表格视图带有可供选择的表格视图单元格。当用户点击一个时,它应该返回到控制器1并更新原始单元格上的详细信息文本。问题是标签将不会更新。这是代码:
此代码来自模态视图控制器。这是获取所选单元格并更新变量的代码。
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var find = totalProducts[productSectionTitles[indexPath.section]]!
selectedCell = find[indexPath.row]
let rootController = TableViewController()
println("\(selectedCell) from productController from selectedCell variable")
rootController.updateText(selectedCell)
self.dismissViewControllerAnimated(true, completion: nil)
cell.accessoryType = UITableViewCellAccessoryType.Checkmark
}
该代码来自启动模态视图的控制器1。这是从模态视图控制器中调用以更新文本。
func updateText(transferVar: String) {
println("\(transferVar) from rootController from transfer parameter")
detailsLabel?.text = transferVar
println(detailsLabel?.text)
}
因此,该参数可以在模态视图控制器与rootController之间完美地传输数据,并且它肯定会保留一个值,因为它会打印出正确的值。但是,当我尝试分配它返回nil时,我在应该分配了detailText后通过println()发现了它。这是单击单元格时控制台打印的内容。
Wood4 from productController from selectedCell variable
Wood4 from rootController from transfer parameter
nil
我不知道如何获取标签以打印出transferVar。我应该补充一点,标签已连接到视图。我该如何解决?
提前致谢。希望你能理解。:]
detailsLabel是否已加载?如果它是一个隐式展开的插座,则可能尚未加载,并且仍然为零。尝试不使用来访问它?
。目前,它正在无声地失败,如果没有,?
它应该会崩溃。
为了确保在分配detailLabel之前将其分配给标签,您可以在中分配viewDidLoad()
。一种简单的方法是在中分配实例变量,text()
然后在中将标签设置为该变量viewDidLoad()
。
var labelText: String!
func text(transferVar: String) {
println("\(transferVar) from rootController from transfer parameter")
labelText = transferVar
}
public override func viewDidLoad(){
detailsLabel.text = labelText
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句