我有一个结构:
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
相同的行计数。