Che*_*dhi 5 arrays uitableview swift
我想制作简单的 UITabelView。我使用名为 backgroundviewcell 的自定义类注册了它的单元格。我想获取所选单元格的标签。我尝试了很多次,但输出值为零。我也尝试过堆栈溢出的解决方案,但它对我不起作用。这是我的 cellForRowAt indexPath 代码:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> backgroundViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "soundElementalcell") as! backgroundViewCell
let imageNames = sections[indexPath.section].images[indexPath.row]
cell.Labeltittle.text = sections[indexPath.section].items[indexPath.row]
cell.Labeltittle.textColor = UIColor(hex : 0x90BA27)
cell.LabelDetail.text = sections[indexPath.section].detail[indexPath.row]
//cell.detailTextLabel?.textColor = UIColor.red
//cell.isHighlighted = false
cell.backgroundColor = UIColor.clear
cell.iconview.image = UIImage(named: imageNames)
return cell
}
Run Code Online (Sandbox Code Playgroud)
这是我的 didSelectRowAt indexPath 代码:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let indexPath = tableView.indexPathForSelectedRow!
let currentCell = tableView.cellForRow(at: indexPath)!
celltext = currentCell.textLabel!.text
performSegue(withIdentifier: "showPlayer", sender: self)
}
Run Code Online (Sandbox Code Playgroud)
我的转场方法是:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showPlayer" {
let playerVC = segue.destination as! PlayerViewController
playerVC.trackName = (celltext)! as String
}
}
Run Code Online (Sandbox Code Playgroud)
label您需要访问用于填充tableView's单元格数据的数组,而不是访问单元格中的文本。
因此,您需要使用UITableViewDelegate方法didSelectRowAtindexPath并访问与 tableView 方法一起使用的数组。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print(indexPath.row)
//Access the array that you have used to fill the tableViewCell
print(yourArray[indexPath.row])
}
Run Code Online (Sandbox Code Playgroud)
注意:一旦确认TableView delegate与您的连接正确ViewController,它就会didSelectRowAt在您选择单元格时调用方法。
编辑:如果你想传递数据,那么试试这样。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "showPlayer", sender: indexPath) //Pass indexPath as sender instead of self
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showPlayer" {
let playerVC = segue.destination as! PlayerViewController
let indexPath = sender as! IndexPath
playerVC.trackName = sections[indexPath.section].items[indexPath.row]
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
这对我有用:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath) as! YourCellType
let labelContent = cell.labelToAccess.text
}
Run Code Online (Sandbox Code Playgroud)
第一行创建您的单元格类型(或标准单元格,不是我的情况)的实例。
第二个将标签的内容(在本例中为 labelToAccess)保存在一个常量中。
| 归档时间: |
|
| 查看次数: |
13299 次 |
| 最近记录: |