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 内的单元格背景颜色
iOS 11 中的 UITableViewRowAction 太宽