有没有办法停用UIScrollView的减速?
我想允许用户滚动画布,但我不希望画布在用户抬起手指后继续滚动.
我有一个UITableView,当用户触摸分段控件时,其数据源和委托在几个自定义数据源对象之间切换(在应用程序商店应用程序中认为"Top Paid"与"Top Free").
每个数据源对象保存其最后一个滚动内容偏移量,并在它成为表视图的活动数据源时通过执行以下操作来恢复它:
tableView.contentOffset = CGPointMake(0, savedScrollPosition);
Run Code Online (Sandbox Code Playgroud)
当用户在桌子静止时切换数据源时,这很有效,但如果用户在桌子仍在移动(即减速)时点击分段控件,则表视图继续从旧偏移减速,有效地覆盖了我的contentOffset赋值.
有没有办法在设置contentOffset时强制表视图停止滚动/减速,或者使这种类型的可切换数据源表视图工作的其他方法?
我正在显示相当大的图像UITableView.当用户滚动时,我希望在桌面视图中始终将中心最多的照片捕捉到中间.也就是说,当桌子处于静止状态时,它将始终UITableViewCell与中心对齐.
怎么做到这一点?
我的UITableView中有一个问题data: [(gamme: String, [(product: String, quantity: Double)])],一切正常:插入行和部分,删除行和部分,重新加载.但有时当我尝试以快速方式删除许多行时(通过滑动表格并点击( - )逐行).它会导致像屏幕截图中的崩溃一样.
这个问题很难在开发应用程序中重现.但我的客户仍然报告它.我的客户是专业人士(不是普通用户),并希望以快速的方式使用中型到大型数据.
这是我删除行的函数:
override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let delete = UITableViewRowAction(style: .destructive, title: "-") { (action, indexPath) in
let cmd = self.groupedData[indexPath.section].1.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .right)
self.delegate?.didDeleteCmdLine(cmd)
if self.groupedData[indexPath.section].1.count == 0 {
self.groupedData.remove(at: indexPath.section)
tableView.deleteSections(IndexSet(integer: indexPath.section), with: UITableViewRowAnimation.right)
}
}
return [delete]
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
这是崩溃的xcode组织者屏幕
检查是否groupedData由@Reinhard提出的主要线程以外的任何线程访问:
private var xgroupedData = [(gamme: GammePrdCnsPrcpl, [cmdline])]()
private var groupedData: [(gamme: GammePrdCnsPrcpl, [cmdline])] …Run Code Online (Sandbox Code Playgroud)