2014-10-16 34 views
0

我已经写了一个应用程序在swift和部分与问题它有两个视图与他们相应的视图控制器。这部分的目的是让用户点击控制器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并且因为它打印出正确的绝对保持的值。但只要我尝试分配它返回零,我发现它应该已分配后,通过println()detailText。这是您点击单元格时控制台打印的内容。

Wood4 from productController from selectedCell variable 
Wood4 from rootController from transfer parameter 
nil 

我不知道如何获得打印出transferVar的标签。我应该添加标签连接到视图。我该如何解决?

在此先感谢。希望你能理解。 :]

回答

0

有详细标签已加载吗?如果它是一个隐含的解包出口,它可能还没有被加载,并且仍然是零。尝试访问它没有?。现在它失败了,没有?它应该崩溃。

为了确保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 
} 
+0

我仍然收到同样的错误?感谢您的快速回答,尽管@connor – Tomblasta 2014-10-16 10:55:13

+0

对不起,我错过了一部分代码。它现在已经修复了 – connor 2014-10-16 10:59:58

+0

它仍然没有工作:/我已经复制了你的新代码,但它仍然返回零? – Tomblasta 2014-10-16 11:06:47