升级到Xcode 7和iOS 9 beta后,我在其中一个UITableViews中收到此错误。每当我滚动时,我的第二个标签与大多数单元格中的第一个标签重叠。奇怪的是,当前的两个单元格没有这个问题。查看图片了解详情。
override func viewDidAppear(animated: Bool) {
namesArray.removeAll(keepCapacity: false)
locationsArray.removeAll(keepCapacity: false)
let query = PFQuery(className: "Schools")
// query.whereKey(key: String, containedIn: [AnyObject])
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
query.orderByAscending("schoolName")
if let objects = query.findObjects() as? [PFObject] {
for object in objects {
self.namesArray.append(object.valueForKey("schoolName") as! String)
self.locationsArray.append(object.valueForKey("schoolLocation") as! String)
self.schoolTable.reloadData()
}
}
} else {
print("Shit, it didn't work...")
}
}
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:ChangeSchoolListTableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell") as! ChangeSchoolListTableViewCell
if namesArray.count > 0 {
cell.nameLabel.text = namesArray[indexPath.row]
cell.locationLabel.text = locationsArray[indexPath.row]
}
return cell
}
class ChangeSchoolListTableViewCell: UITableViewCell {
@IBOutlet var nameLabel: UILabel!
@IBOutlet var locationLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
非常感谢你。
答案 0 :(得分:0)
我认为你在表格中添加了一个标签。您需要添加一个标签并重复使用它,而不是添加另一个标签。解决方案是使用自定义UITableViewCell子类。如果您显示UITableView方法的代码也会有所帮助。
答案 1 :(得分:0)
我认为,您从后台线程调用 reloadData 。如果是这样,那么这是一个主要问题,要解决它,你应该从主线程调用 reloadData 。您可以看到here如何从后台线程调用主线程上的代码块。
答案 2 :(得分:0)
在添加子视图之前,您需要删除uitableviewcell的contentview的子视图。