UITableViewRowAction 行为不可预测

Posted

技术标签:

【中文标题】UITableViewRowAction 行为不可预测【英文标题】:UITableViewRowAction behaves unpredictably 【发布时间】:2015-10-04 07:47:36 【问题描述】:

我有以下代码可以处理 tableViewCell 中的正确滑动,当用户在具有讨论 URL 的正确单元格上向右滑动时,它工作正常,如果用户在没有这个的单元格上向右滑动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 []
    

【问题讨论】:

【参考方案1】:

不要返回空动作数组。而是实现 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]

【讨论】:

以上是关于UITableViewRowAction 行为不可预测的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewRowAction 可访问性值

更改 UITableViewRowAction 内的单元格背景颜色

动画后 UITableViewRowAction 完成

iOS 11 中的 UITableViewRowAction 太宽

使用 UITableViewRowAction 执行 segue 控制

如何在 UITableViewRowAction 中添加图像?