在iOS 9中滚动UITableView会导致重叠标签

时间:2015-09-06 18:21:01

标签: ios uitableview swift2 ios9 xcode7

升级到Xcode 7和iOS 9 beta后,我在其中一个UITableViews中收到此错误。每当我滚动时,我的第二个标签与大多数单元格中的第一个标签重叠。奇怪的是,当前的两个单元格没有这个问题。查看图片了解详情。

Normal Picture

Not Normal Picture

Some screwed up

 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
}
}

非常感谢你。

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:0)

我认为你在表格中添加了一个标签。您需要添加一个标签并重复使用它,而不是添加另一个标签。解决方案是使用自定义UITableViewCell子类。如果您显示UITableView方法的代码也会有所帮助。

答案 1 :(得分:0)

我认为,您从后台线程调用 reloadData 。如果是这样,那么这是一个主要问题,要解决它,你应该从主线程调用 reloadData 。您可以看到here如何从后台线程调用主线程上的代码块。

答案 2 :(得分:0)

在添加子视图之前,您需要删除uitableviewcell的contentview的子视图。