为什么我的 table 视图只显示数组中的大约 20 个项目?
Why is my table view only showing about 20 of my items from an array?
我的应用程序没有正确显示数组中的所有项目。是什么导致了这种情况?
var songamount = ["Refresh Page"]
var songImageAmount = [MPMediaItemArtwork]()
override func viewDidLoad() {
super.viewDidLoad()
MPMediaLibrary.requestAuthorization { (status) in
let myPlaylistQuery = MPMediaQuery.playlists()
let playlists = myPlaylistQuery.collections
self.songamount.remove(at: 0)
for playlist in playlists! {
print(playlist.value(forProperty: MPMediaPlaylistPropertyName)!)
let songs = playlist.items
for song in songs {
let songTitle = song.value(forProperty: MPMediaItemPropertyTitle)
let songImage = song.artwork
self.songamount.append(songTitle as! String)
self.songImageAmount.append(songImage!)
print("\t\t", songTitle!)
}
print(self.songamount)
print("Song Amount:\(self.songamount.count)")
print("Image Amount: \(self.songImageAmount.count)")
}
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return songamount.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "LibraryCell", for: indexPath) as! LibraryCell
cell.LibraryTitle.text = songamount[indexPath.row]
//cell.LibraryImage.image = songImageAmount[indexPath.row]
print(indexPath)
return cell
}
}
这是我的代码,用于显示用户 Itunes 库中的所有歌曲,但它只显示 tableView 中数组中的 20 个项目。
更新 - 我已经可以正确列出我所有歌曲的列表,但列表中只显示了其中的 33 首。这是更新后的代码
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var TextDebug: UILabel!
var songamount = ["Please Reload View"]
var songImageAmount = [MPMediaItemArtwork]()
override func viewDidLoad() {
super.viewDidLoad()
MPMediaLibrary.requestAuthorization { (status) in
let mySongQuery = MPMediaQuery.songs()
let songs = mySongQuery.collections
self.songamount.remove(at: 0)
for song in songs! {
print(MPMediaItemPropertyTitle)
let songs = song.items
for song in songs {
let songTitle = song.value(forProperty: MPMediaItemPropertyTitle)
//let songImage = song.artwork
self.songamount.append(songTitle as! String)
//self.songImageAmount.append(songImage!)
print("\t\t", songTitle!)
}
print(self.songamount)
print("Song Amount:\(self.songamount.count)")
//print("Image Amount: \(self.songImageAmount.count)")
}
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return songamount.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "LibraryCell", for: indexPath) as! LibraryCell
cell.LibraryTitle.text = songamount[indexPath.row]
//cell.LibraryImage.image = songImageAmount[indexPath.row]
let sections: Int = tableView.numberOfSections
var rows: Int = 0
for i in 0..<sections {
rows += tableView.numberOfRows(inSection: i)
TextDebug.text = "\(rows)"
}
return cell
}
我的问题的解决方案是在 viewDidLoad()
的末尾添加 tableView.reloadData()
我的应用程序没有正确显示数组中的所有项目。是什么导致了这种情况?
var songamount = ["Refresh Page"]
var songImageAmount = [MPMediaItemArtwork]()
override func viewDidLoad() {
super.viewDidLoad()
MPMediaLibrary.requestAuthorization { (status) in
let myPlaylistQuery = MPMediaQuery.playlists()
let playlists = myPlaylistQuery.collections
self.songamount.remove(at: 0)
for playlist in playlists! {
print(playlist.value(forProperty: MPMediaPlaylistPropertyName)!)
let songs = playlist.items
for song in songs {
let songTitle = song.value(forProperty: MPMediaItemPropertyTitle)
let songImage = song.artwork
self.songamount.append(songTitle as! String)
self.songImageAmount.append(songImage!)
print("\t\t", songTitle!)
}
print(self.songamount)
print("Song Amount:\(self.songamount.count)")
print("Image Amount: \(self.songImageAmount.count)")
}
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return songamount.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "LibraryCell", for: indexPath) as! LibraryCell
cell.LibraryTitle.text = songamount[indexPath.row]
//cell.LibraryImage.image = songImageAmount[indexPath.row]
print(indexPath)
return cell
}
}
这是我的代码,用于显示用户 Itunes 库中的所有歌曲,但它只显示 tableView 中数组中的 20 个项目。
更新 - 我已经可以正确列出我所有歌曲的列表,但列表中只显示了其中的 33 首。这是更新后的代码
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var TextDebug: UILabel!
var songamount = ["Please Reload View"]
var songImageAmount = [MPMediaItemArtwork]()
override func viewDidLoad() {
super.viewDidLoad()
MPMediaLibrary.requestAuthorization { (status) in
let mySongQuery = MPMediaQuery.songs()
let songs = mySongQuery.collections
self.songamount.remove(at: 0)
for song in songs! {
print(MPMediaItemPropertyTitle)
let songs = song.items
for song in songs {
let songTitle = song.value(forProperty: MPMediaItemPropertyTitle)
//let songImage = song.artwork
self.songamount.append(songTitle as! String)
//self.songImageAmount.append(songImage!)
print("\t\t", songTitle!)
}
print(self.songamount)
print("Song Amount:\(self.songamount.count)")
//print("Image Amount: \(self.songImageAmount.count)")
}
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return songamount.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "LibraryCell", for: indexPath) as! LibraryCell
cell.LibraryTitle.text = songamount[indexPath.row]
//cell.LibraryImage.image = songImageAmount[indexPath.row]
let sections: Int = tableView.numberOfSections
var rows: Int = 0
for i in 0..<sections {
rows += tableView.numberOfRows(inSection: i)
TextDebug.text = "\(rows)"
}
return cell
}
我的问题的解决方案是在 viewDidLoad()
tableView.reloadData()