2016-05-23 9 views
0

私は画像やテキストなどの異なるコンテンツにテーブルを追加しようとしています。 私は2種類のカスタムtableViewCellを作成しました。私はそれがすべて保存されるメイン配列を持っています(イメージはJSONに格納されるためbase64にエンコードされます)。カスタムTableViewCell | Swift

var content = [String]() 
var imgCell: ImageTableViewCell = ImageTableViewCell() 
var txtCell: TextTableViewCell = TextTableViewCell() 

イメージ/テキストを追加する2つのボタンがあります。

@IBAction func textAddButton(sender: AnyObject) { 
    self.content.append("text") 
    self.articleTableView.reloadData() 
} 

テーブルを更新する際に、配列データをカスタムセルに接続して表示する方法を理解しています。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ 
    if content[indexPath.row] == "text" { 
     return txtCell 
    } 
    else { 
     return imgCell 
    } 
    return UITableViewCell() 
} 

ここにカスタムセルがあります。

class TextTableViewCell: UITableViewCell { 

    @IBOutlet weak var textArticle: UITextView! 

} 

答えて

1

このようなセルは決して初期化しません。 cellForRowAtIndexPathの中ではdequeueReusableCellWithIdentifierと呼ばれ、indexPathに応じてセルを設定します。ストーリーボードファイルでセルを作成した場合は、必ずストーリーボードに識別子を設定してください。

​​3210

は、別の方法としては、各細胞型のためcellForRowAtIndexPathに別々のブロックを持つことができ、その後、あなたのようなものだろう:私は、各セルクラスに設定されている場合、それらに識別子を与えるためにあらゆる理由がある

let cell = tableView.dequeueReusableCellWithIdentifier("TextCell", forIndexPath:indexPath) as! TextTableViewCell 
+0

を? –

+0

'UITableView'は、(再利用のために)文字列識別子を使用してセルを識別します。あなたが 'UITableView'を使いたいのであれば、そのAPIに従ってそれを使う必要があります。 – shim

+0

大丈夫ですが、問題はどのように配列からデータを接続し、型に応じて、必要なクラスを使用し、それを配列で表示できますか? –

関連する問題