我有一个使用自定义单元格的表格,在自定义单元格中我有一个选择器和一个文本字段。
我有一个自定义类,用于具有这些元素插座的单元格。
在表格的父VC中,我希望能够引用文本字段的contensts和选择器的值。
如果这些值位于自定义单元格中而不是仅在主视图控制器视图上,我如何获取这些值?
细胞代码:
class NewExerciseTableViewCell: UITableViewCell {
static let reuseIdentifier = "Cell"
@IBOutlet weak var setNumber: UILabel!
@IBOutlet weak var repsPicker: UIPickerView!
@IBOutlet weak var userExerciseWeight: UITextField!
}
我尝试通过创建let setCell = NewExerciseTableViewCell()
然后尝试通过其属性访问其内容组件来访问它,但这不是这样做的方法!
在此处感谢您如何提取此单元格中的值!
编辑:这是我的callForRowAt
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as? NewExerciseTableViewCell else {
fatalError("Unexpected Index Path")
}
cell.backgroundColor = UIColor.customBackgroundGraphite()
cell.textLabel?.textColor = UIColor.white
return cell
}
答案 0 :(得分:0)
这个问题包含多个部分,我将尝试逐一解决。
1-首先,如果要设置值,属性等,则必须在tableView(_:cellForRowAt:)
方法中进行设置。
(在故事板中设置cellIdentifer
。)
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellIndetifier", for: indexPath) as! NewExerciseTableViewCell
cell.setNumber.text = "1"
...
return cell
}
2-只能通过创建新的子视图来访问单元的子视图。这没有意义。使用let cell = tableView.cellForRow(at: ...)
,然后您就拥有有效的cell.setNumber
P.S。顺便说一下,setNumber
不是命名标签的好方法。仅对set
方法使用setter
。
答案 1 :(得分:0)
您需要使用自定义类型的类型创建UITableViewCell
的对象。假设您正在制作表格视图,然后您可以在cellForRowAt中添加单元格。请参阅以下代码以供参考
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! NewExerciseTableViewCell
cell.setNumber.text = // Some Value
}
在上面的方法中,单元格现在是NewExerciseTableViewCell
类型,您现在可以访问该类的任何公共属性。
如果您想获取特定单元格的值,则需要先获取单元格。请查看以下代码以供参考
let cell = yourTableView.cellForRowAtIndexPath(indexPath) as! NewExerciseTableViewCell
print(cell.setNumber.text)