我的目标是在表格视图中为每一行显示一个独特的图像和标签。这是我目前所处的位置:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath )-> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! DailyBarCellViewTableViewCell
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0)) {
let data = DailyBarCellViewTableViewCell.Static.data
dispatch_async(dispatch_get_main_queue()) {
cell.barName?.text = data.namesArray[indexPath.row]
}
}
return cell
}
CellDataDisplayInformation的内容:
struct CellDataDisplayInformation {
var namesArray : [String?] = []
var pictureArray : [UIImage?] = []
init(){
for index in 0...21 {
var data = BarDetails(index: index)
if data.barName != nil && data.barImage != nil {
namesArray.append(data.barName!)
pictureArray.append(data.barImage!)
}
}
}
}
data = CellDataDisplayInformation()
保持[Strings?]和[UIImages?]的数组显示在每个相应的单元格中。使用此方法,UI最初加载每个单元格中的所有正确信息。然而,当我向下滚动到看不见的单元格时,每个单元格中的标签会随机播放2秒钟,然后移动到正确的位置。
如果我不使用"发送"而且只是这样做:
let data = CellDataDisplayInformation()
cell.barName?.text = data.namesArray[indexPath.row]
每个单元格的所有标签保持不变并且不会随机播放,但是当我滚动每个新单元格时,视图会滞后。
总之,在表格单元格中显示数据时,如何避免混乱和滞后?
My DailyBarCellViewTableViewCell类:
class DailyBarCellViewTableViewCell: UITableViewCell {
// MARK: Properties
struct Static {
static var data = CellDataDisplayInformation()
}
@IBOutlet weak var barName: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
self.barName.text = nil
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
override func prepareForReuse() {
self.barName.text = nil
super.prepareForReuse()
}
}