Ответ 1
Вы должны вернуть allSongsArray.count
, и чтобы не возвращать пустые ячейки, используйте yourTableView.reloadData
после того, как вы заполните allSongsArray
.
Я хочу показать 25 песен, которые у меня есть в моей библиотеке. Это мой код:
var allSongsArray: [MPMediaItem] = []
let songsQuery = MPMediaQuery.songsQuery()
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 25 //allSongsArray.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell")
let items = allSongsArray[indexPath.row]
cell?.textLabel?.text = items.title
cell?.detailTextLabel?.text = items.artist
cell?.imageView?.image = items.artwork?.imageWithSize(imageSize)
return cell!
}
Когда я запускаю это, он сбой, потому что:
фатальная ошибка: индекс за пределами диапазона
Я попытался изменить numberOfRowsInSection
на allSongsArray.count
, но в итоге получилась та же ошибка.
Вы должны вернуть allSongsArray.count
, и чтобы не возвращать пустые ячейки, используйте yourTableView.reloadData
после того, как вы заполните allSongsArray
.
Когда вы сначала создаете массив, он пуст. Следовательно, он выдаст вам ошибку.
Попробуйте вернуть счетчик массива песен.
1 вам нужно получить данные в массиве, а затем обновить представление таблицы.
Вот пример кода:
@IBAction private func refresh(sender: UIRefreshControl?) {
if myArray.count > 0 {
self.tableView.reloadData()
sender?.endRefreshing()
} else {
sender?.endRefreshing()
}
}
Пожалуйста, верните фактическое количество массивов вместо статического
return allsongsarray.count