我无法将细胞标签文本传输到UILabel

时间:2017-08-16 13:30:19

标签: ios swift uitableview

将tableviewcell的标签文本设置为另一个viewcontroller的UILabel时遇到了一些麻烦。

我的代码如下:

    let indexPath = tableView.indexPathForSelectedRow;
    let currentCell = tableView.cellForRow(at: indexPath!)!as! ViewControllerTableViewCell
    let storyboard = UIStoryboard(name:"Main",bundle:nil)
    var viewController = storyboard.instantiateViewController(withIdentifier: "DetailVC")as! DetailVC
    viewController.comText = currentCell.labelName.text
    present(viewController, animated: true, completion: nil)

3 个答案:

答案 0 :(得分:0)

作为建议(如果Massimo的建议不起作用),请在创建视图控制器后尝试添加以下行:

_ = viewController.view!

可能不需要“bang”(我目前没有打开Xcode),但这会导致viewDidLoad执行,从而“膨胀”您的视图及其声明/定义的相关小部件你的故事板。然后,您可以将您希望的任何文本分配给目标UILabel.text属性。

答案 1 :(得分:0)

正在发生的事情是,您尚未尝试访问尚未创建的视图:

  

此代码将创建一个视图控制器

var viewController = storyboard.instantiateViewController(withIdentifier: "DetailVC")as! DetailVC
  

在这里,您尝试在展示之前设置标签文本   控制器。

viewController.comText = currentCell.labelName.text

此时控制器尚未加载其视图。由于没有视图,因此没有标签。你应该做的是在你的destinationViewController中设置一个String属性并在此处设置它。然后在destinationViewController的<{1}}方法中将标签文本设置为属性中引用的String。

  

此代码显示viewcontroller并告诉它应加载其视图

ViewDidLoad()
  

以下是视图控制器生命周期的图片

只有在触发ViewDidLoad()方法时才能使用视图 enter image description here

答案 2 :(得分:-1)

不确定它是否如此微不足道,但您的comText实际上是UILabel? 因为如果是这样,你必须设置text属性而不是整个对象:

viewController.comText = currentCell.labelName.text

应该如此

viewController.comText.text = currentCell.labelName.text