表视图中的结构数组

时间:2016-09-06 16:50:08

标签: arrays swift

关于结构阵列有几个问题,但我找不到任何答案。提前致谢。 我有以下几种结构:

var datosLibros = [BookData]()

该结构具有以下数据:

struct BookData {
var title: String
var author: String
var image: UIImage?
var isbn: String

}

用户使用isbn进行搜索,并将图书数据保存到此结构中并附加到datosLibros中。搜索结果通过以下代码附加到datosLibros:

 let libro = BookData(title: bookTitle!, author: bookAuthor!, image: bookCover, isbn: termino)
 datosLibros.append(libro)

我需要在表格视图中检索单元格文本的每个标题。我试过这个:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
    for  i in datosLibros  {
        cell.textLabel?.text = i.title
    }
    return cell
}

它似乎工作,但只有在进行另一次搜索之前。然后,每个单元格标题都以最后的书名称重复。 请告诉我我做错了什么。

1 个答案:

答案 0 :(得分:3)

您必须使用indexPath.row作为数组索引从数组中检索该书。通过在cellForItemAtIndexPath方法中使用for循环,您只需将每个单元格的标题设置为数组中最后一本书的标题。

试试这个:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let book = datosLibros[indexPath.row]
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)

    cell.textLabel?.text = book.title

    return cell
}

将书籍附加到datasLibros后,您需要使用tableView.reloadData()重新加载表格视图。