UITableViewCell在敲击时反应迟钝

时间:2016-01-15 16:08:30

标签: ios swift uitableview

我创建了一个UITableView,其中的单元格包含相当多的UIView个对象。但是当我选择一个单元格时,它在运行segue时似乎并不顺畅。第二个观察是,如果我快速双击一个单元格,它将运行segue两次(推视图两次)。

什么可能导致这种行为?我将手机用作测试环境,所有其他应用都已关闭。

override func viewDidLoad() {
    super.viewDidLoad()

    //PickerView
    self.pickerView.delegate = self
    self.pickerView.dataSource = self
    self.pickerView.interitemSpacing = 60
    self.pickerView.backgroundColor = UIColor(hexString: "#1C1F27")
    self.pickerView.textColor = UIColor(hexString: "#D8D8D8").colorWithAlphaComponent(0.4)
    self.pickerView.highlightedTextColor = UIColor.whiteColor()
    self.pickerView.font = UIFont(name: "MavenProRegular", size: 12)!
    self.pickerView.highlightedFont = UIFont(name: "MavenProRegular", size: 12)!
    self.pickerView.pickerViewStyle = .StyleFlat
    self.pickerView.maskDisabled = false
    self.pickerView.reloadData()

    //Tableview
    self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None
    self.tableView.delegate = self
    self.tableView.dataSource = self
    self.tableView.backgroundColor = UIColor.clearColor()

    //ActivityIndicator
    self.refreshControl = UIRefreshControl()
    self.refreshControl.tintColor = UIColor.whiteColor().colorWithAlphaComponent(0.4)
    self.refreshControl.addTarget(self, action: "refresh", forControlEvents: UIControlEvents.ValueChanged)
    self.tableView.addSubview(refreshControl)
}

//TABLEVIEW METHODS
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return 140
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 5
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("MatchCell", forIndexPath: indexPath) as UITableViewCell

    cell.backgroundColor = UIColor.clearColor()
    cell.selectionStyle = UITableViewCellSelectionStyle.Default

    let backgroundSelectionView = UIView(frame: cell.bounds)
    backgroundSelectionView.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.05)
    cell.selectedBackgroundView = backgroundSelectionView

    return cell
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    self.performSegueWithIdentifier("CameraController", sender: self)
    tableView.deselectRowAtIndexPath(indexPath, animated: true)
}

1 个答案:

答案 0 :(得分:-1)

let backgroundSelectionView = UIView(frame: cell.bounds)

您可以将视图放在单元格文件中。 由于tableViewCells正在被重用,因此一旦他们创建了单元格(使用视图),就不会再次生成它。

另一方面,您所做的是每次出列单元格时,初始化视图并将其指定为单元格的子视图,这意味着您正在进行额外的视图初始化工作。

因此,您可以转到cell.m文件并为您需要的视图添加属性。如果您在tableview和cell中使用storyboard,那么只需在那里进行IBOutlet。如果你正在使用xib文件,那就去那里做一个IBOutlet。

另一方面,我不知道你的相机视图控制器在做什么。也许实例化导致了性能问题。您可以在相机VC上提供更多代码。