6

我有以下快速代码来实现 UITableViewRowAction,当我滑动一行时,该行按预期向左滑出,但是所有部分标题行也与表格行同时向左滑动。

我还包括了一个屏幕截图来显示正在发生的事情

如果我删除 viewForHeader 覆盖并用 titleForHeaderInSection 替换它,那么我没有问题。

覆盖 viewForHeader 的原因是我想在 Header Row 中放置一个图像。

override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

    let cell = tableView.dequeueReusableCellWithIdentifier("header") as UITableViewCell

    cell.textLabel?.text = instrumentGroups[section].name
    cell.imageView?.image = UIImage(named: instrumentGroups[section].name)

    return cell
}

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

    cell.instrument = instrumentGroups[indexPath.section].instruments[indexPath.row]

    return cell
}

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {

    let instrument = instrumentGroups[indexPath.section].instruments[indexPath.row]

    var actions: [AnyObject] = []

    var action = UITableViewRowAction(style: .Normal, title: "Remove Watch") { (action, indexPath) -> Void in
        tableView.editing = false

        instrument.SetWatchList(false)

        self.refresh()
    }

    action.backgroundColor = UIColor.redColor()
    actions.append(action)

    return actions
}

override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {

}

当我将行向左滑动时,所有部分行也滑动

4

2 回答 2

23

只需返回cell.contentView而不是cell在您的 viewForHeaderInSection 函数中,您的问题就会得到解决。

于 2015-07-10T14:24:41.637 回答
6

我有同样的问题。答案很简单。因为您使用 UITableViewCell 作为标题视图。改用 UILabel 或 UITableViewHeaderFooterView 。

于 2015-04-30T16:30:30.457 回答