Swift-如何访问单元格名称

问题描述

import UIKit

class TableViewControllerOne: UITableViewController {


  let musicArray = ["Old Town Road","Starboy"]

  var songName = ""


  override func viewDidLoad() {
    super.viewDidLoad()
  }

  override func numberOfSections(in tableView: UITableView) -> Int {
    // #warning Incomplete implementation,return the number of sections
    return 1
  }

  override func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation,return the number of rows
    return musicArray.count
  }

  override func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "MyCell",for: indexPath)
    cell.textLabel!.text = musicArray[indexPath.row]
    //here is the problem
    songName = cell.textLabel!.text!
    return cell
  }

  override func prepare(for segue: UIStoryboardSegue,sender: Any?) {
    var vc = segue.destination as! ViewControllerOne
    vc.songFinalName = self.songName
    
  }

}

所以我正在做音乐播放器App,但是我不知道如何播放当前歌曲。我有所有的歌曲连续(标识符是MyCell)。当我单击名为“ Starboy”的单元格时,它应该获得该名称并将数据传递给另一个VC并在那里播放它,但始终只播放原始图像中的最新内容,因此例如3首歌曲:Old Town Road,Starboy,Hello,它只能播放最新的歌曲,因此在此示例中为Hello。有人可以帮助我吗?谢谢您的阅读。

解决方法

您需要实现表格视图的委托方法didSelectRowAt,该方法将在用户点击表格视图的任何行时更新songName属性

public func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
   songName = musicArray[indexPath.row]
}

此外,从songName = cell.textLabel!.text!方法中删除cellForRowAt: indexPath