2016-09-06 51 views
0

關於結構數組有幾個問題,但我找不到任何答案。提前致謝。 我有結構的下面的數組:表格視圖中的結構數組

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 
} 

這似乎是工作,但直到另一個搜索。然後,每個單元格標題都會重複上一次書名。 請告訴我我做錯了什麼。

+0

您是否將搜索結果追加到您的datosLibros數組中? –

+0

是的,我會告訴你如何在編輯後的問題。 –

+0

你如何填充datosLibros? – boidkan

回答

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()表視圖。

+0

像魅力一樣工作!謝謝!!你的解釋很清楚,現在我明白爲什麼標題重演了。 –