为什么我的表视图只显示数组中的大约20个项目?

问题描述 投票:0回答:1

我的应用程序未正确显示数组中的所有项目。是什么导致这种情况发生?

    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

    }
ios swift media-player mpmedialibrary
1个回答
1
投票

我的问题的解决方案是将tableView.reloadData()添加到viewDidLoad()的末尾

© www.soinside.com 2019 - 2024. All rights reserved.