使用特定关键字从结构填充 UITableView



我有一个结构:

class Song: CustomStringConvertible {
let title: String
let artist: String
init(title: String, artist: String) {
self.title = title
self.artist = artist
}
var description: String {
return "(title) (artist)"
}
}
var songs = [
Song(title: "Song Title 3", artist: "Song Author 3"),
Song(title: "Song Title 2", artist: "Song Author 2"),
Song(title: "Song Title 1", artist: "Song Author 1"),
Song(title: "Song Title 0", artist: "Song Author 1")
]

支付UITableView

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell : LibrarySongTableViewCell! = tableView.dequeueReusableCell(withIdentifier: "Library Cell") as! LibrarySongTableViewCell
cell.titleLabel = songs[indexPath.row].title
cell.artistLabel = songs[indexPath.row].artist
}

我想在另一个UITableViewController中显示同一艺术家的所有歌曲。所以说我说艺术家是歌曲作者1。我希望歌曲标题0 和歌曲标题1填充 UITableViewController。我该怎么做?

对于您的其他UITableViewController创建另一个歌曲列表,如下所示:

var author1Songs = songs.filter { song -> Bool in
return song.artist == "Song Author 1"
}

然后,您可以使用它来填充其他表,就像使用songs一样。

我假设您使用的是新的UITableViewController,因此您需要确保提供正确的节数和正确的行数。

所以当你返回行数时,你需要使用author1Songs.count. 不要使用与songs相同的行计数。

最新更新