我有下面的代码,可以在tableViewCell中进行正确的滑动操作,当用户右键滑动具有DiscussionURL的正确单元格时,它的工作正常,如果用户右键滑动没有该URL的单元格,则UITableViewRowAction返回一个空数组。好的,选择没有URL的单元格后,我将无法选择任何其他tableViewCell,甚至无法向右滑动。我知道我在这里想念什么。

请帮我弄清楚。

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
    let discussion = UITableViewRowAction(style: .Normal, title: "Discussion") { action, index in
        self.loadTheDiscussionPageInWebViewController(indexPath.section, index: indexPath.row)
    }

    if let _ = self.allDatas[indexPath.section][indexPath.row].discussionUrl {
        print(" BUTTON \(discussion)")

        return [discussion]
    } else {
        print("NO BUTTON")

        return []
    }
}

最佳答案

不要返回空的动作数组。而是实现tableView:indexPath:函数以仅对其中具有讨论URL的单元格返回true。这样的事情(确保在return语句下面返回Bool):

func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
     return self.allDatas[indexPath.section][indexPath.row].discussionUrl
}


然后像这样调用您的editActionsForRowAtIndexPath

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
    let discussion = UITableViewRowAction(style: .Normal, title: "Discussion") { action, index in
    self.loadTheDiscussionPageInWebViewController(indexPath.section, index: indexPath.row)
    return [discussion]
}

关于ios - UITableViewRowAction行为异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32931219/

10-10 04:03