我正在尝试添加不同的内容,例如图片/文字。 我为这两种类型创建了2个自定义tableViewCells。我有主数组,它将全部保存(图像编码为base64,因为存储在JSON中)。
var content = [String]()
var imgCell: ImageTableViewCell = ImageTableViewCell()
var txtCell: TextTableViewCell = TextTableViewCell()
有两个按钮用于添加图像/文本。
@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!
}
答案 0 :(得分:1)
你永远不会像这样初始化细胞。在cellForRowAtIndexPath
内,您拨打dequeueReusableCellWithIdentifier
并根据indexPath
相应地设置了相应的单元格。如果您已在Storyboard文件中创建了单元格,请确保在故事板中设置其标识符。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell = tableView. dequeueReusableCellWithIdentifier(identifierForIndexPath(indexPath), forIndexPath:indexPath)
// set up cell accordingly
}
func identifierForIndexPath(indexPath:NSIndexPath) -> String {
// for example: (you can set this up according to your needs)
if (indexPath.row == 0) {
return "ImageCell" // these must match your identifiers in your storyboard
}
return "TextCell"
}
或者,对于每种单元格类型,您可以在cellForRowAtIndexPath
中使用单独的块,然后您可以使用以下内容:
let cell = tableView.dequeueReusableCellWithIdentifier("TextCell", forIndexPath:indexPath) as! TextTableViewCell