将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)
答案 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()
以下是视图控制器生命周期的图片
答案 2 :(得分:-1)
不确定它是否如此微不足道,但您的comText
实际上是UILabel
?
因为如果是这样,你必须设置text
属性而不是整个对象:
viewController.comText = currentCell.labelName.text
应该如此
viewController.comText.text = currentCell.labelName.text