无法访问我的单元格内容中的变量

Posted

技术标签:

【中文标题】无法访问我的单元格内容中的变量【英文标题】:Can't access to variable in my cell content 【发布时间】:2020-01-08 23:07:09 【问题描述】:

我希望在自定义单元格中的 awakeFromNib 函数中获取变量内容。

实际上,我是这样传递数据的:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

    let cell = tableView.dequeueReusableCell(withIdentifier: "question_cell", for: indexPath) as! QuestionsCell

    cell.answers = ["Answer 1", "Answer 2"]

    return cell

在我的 QuestionCell 文件中,我的变量声明如下: var answers = [String]()

当我想打印我的答案变量时,我在输出控制台中有一个空数组[]

override func awakeFromNib() 
    super.awakeFromNib()

    print("HELLOOOOOOOOOOOO !!!!!!!!!!!!")
    print(answers)

你能帮我解决这个问题吗? 谢谢

【问题讨论】:

cellForRowAt 在绘制单元格时被调用。 awakeFromNib 在从情节提要中解码 viewController 时被调用。 awakeFromNib 首先发生。它不会再发生了。所以此时的答案将是nil。你真正的问题是awakeFromNib 什么时候被调用?我已经为你链接了一个类似的问题 这能回答你的问题吗? When does awakeFromNib get called? 【参考方案1】:

awakeFromNib() 将在调用 cellForRowAt 中的行 cell.answers = ["Answer 1", "Answer 2"] 之前调用。

要响应对答案的更改,您可以对您的变量定义执行属性观察者didSet

只需将var answers = [String]() 更改为:

var answers = [String]() 
    didSet 
        print(answers)
    

【讨论】:

另外,awakeFromNib 仅在创建单元格时调用,而不是在重用时调用,因此即使在该函数之前设置了属性,它也只会被调用一次 感谢您的帮助。我已经这样做了,但我忘记为我的 tableView 制作一个 ReloadData 所以内容没有加载。感谢您的帮助?

以上是关于无法访问我的单元格内容中的变量的主要内容,如果未能解决你的问题,请参考以下文章

Excel 2010 将单元格内容中的科学记数法方程转换为十进制表示

在wpf中访问数据网格内的组合框属性

从单元格内的 ScrollView 访问 UICollectionViewCell 的索引

单击表格单元格内的按钮时无法更新状态,React Ant Design

无法从 UITest 中的 CollectionView 元素访问单元格

无法访问 .env 中的变量键(dotenv 包 React)