访问自定义单元格中的组件?
Accessing the components in a custom cell?
我有一个 table 使用自定义单元格,在自定义单元格中我有一个选择器和一个文本字段。
我有一个定制的 class 单元格,它有这些元素的出口。
在 table 的父级 VC 中,我希望能够引用文本字段的内容和选择器的值。
当这些值位于自定义单元格中而不是仅位于主 viewcontroller 视图中时,我如何访问这些值?
单元格代码:
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
}
这个问题包含多个部分,我会尽量一一解答。
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
不是命名标签的好习惯。仅对 setter
方法使用 set
。
您需要使用自定义类型创建一个 UITableViewCell
对象。假设您正在创建一个 table 视图,那么您可以在 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
类型,您现在可以访问 class.
的任何 public 属性
如果您想获取特定单元格的值,则需要先获取该单元格。检查以下代码以供参考
let cell = yourTableView.cellForRowAtIndexPath(indexPath) as! NewExerciseTableViewCell
print(cell.setNumber.text)
我有一个 table 使用自定义单元格,在自定义单元格中我有一个选择器和一个文本字段。
我有一个定制的 class 单元格,它有这些元素的出口。
在 table 的父级 VC 中,我希望能够引用文本字段的内容和选择器的值。
当这些值位于自定义单元格中而不是仅位于主 viewcontroller 视图中时,我如何访问这些值?
单元格代码:
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
}
这个问题包含多个部分,我会尽量一一解答。
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
不是命名标签的好习惯。仅对 setter
方法使用 set
。
您需要使用自定义类型创建一个 UITableViewCell
对象。假设您正在创建一个 table 视图,那么您可以在 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
类型,您现在可以访问 class.
如果您想获取特定单元格的值,则需要先获取该单元格。检查以下代码以供参考
let cell = yourTableView.cellForRowAtIndexPath(indexPath) as! NewExerciseTableViewCell
print(cell.setNumber.text)