2016-09-06 22 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

は魅力的に働いた!!ありがとう!!あなたの説明は非常にはっきりしていて、今はタイトルが繰り返している理由を理解しています。 –