Swift canEditRowAtIndexPath 在 UIPageViewController EZSwipeViewController 中不起作用
Posted
技术标签:
【中文标题】Swift canEditRowAtIndexPath 在 UIPageViewController EZSwipeViewController 中不起作用【英文标题】:Swift canEditRowAtIndexPath not working in UIPageViewController EZSwipeViewController 【发布时间】:2017-02-08 06:55:12 【问题描述】:我有以下场景,需要帮助解决场景中的棘手情况
目前有一个 Xcode 项目,正在使用 EzSwipeController 在三个视图控制器之间滑动(分页效果)。
在我的第一个 ViewController 中(这个 viewController 是从我的自定义动态框架中获取的,作为我的要求的一部分)-
获取 ViewController 的代码:
userProfile.createProfileUI(userSession!) result in
switch result
case let .Success(profileViewController):
myDetailsVC = profileViewController //myDetailsVc is passed to EZSwipControllerDataSource array
default:
break
-
另外两个 ViewController 在我的项目故事板中
问题 -
在第一个 ViewController 中,有一个 tableView 为几个单元格(电话号码)启用了 canEditRowAtIndexPath。
所以当我尝试滑动该行时,EZSwipeController 首先响应,然后 因此,我无法编辑该行。
这是正在发生的事情 - http://recordit.co/SOJgdeYchP
这是应该发生的事情 - http://recordit.co/EBPSbjH31q
我该如何处理这个问题?当我尝试编辑行时,有没有办法可以覆盖默认的滑动控制器操作?
请帮忙!
【问题讨论】:
【参考方案1】:将滑动手势识别器附加到层次结构中的父级。
如果您使用的是 UITableViewController,请将其替换为内部带有 UITableView 的 UIViewController。然后只需将手势识别器拖到 Storyboard 中的视图控制器上,它就会附加到 UIViewController 的 Content View 而不是 UITableView。
尽管归根结底,这本质上是一种有缺陷的方法,因为只有在页面上没有任何元素同时具有滑动手势的情况下,才能在应用程序中滑动翻页。如果你这样做了,即使你编写了一个变通方法来使视图控制器中的元素(在本例中为表格视图单元格)的手势识别器而不是翻页滑动手势触发,也会产生不一致的用户体验。
我的建议:完全不要将表格视图用于此类表单。除了上述机械 UX 问题之外,从用户感知的角度来看,没有任何迹象表明这是一个表格视图,而不仅仅是一个滚动视图,因此没有任何迹象表明用户可以使用滑动操作(删除)。请改用滚动视图,并采用不同的删除方法(删除始终可见的按钮、仅在用户在某处点击编辑后才可见的删除按钮等)。
【讨论】:
ezswipe控制器中的第一个视图控制器已经是一个ui viewcontroller,里面有table view。以上是关于Swift canEditRowAtIndexPath 在 UIPageViewController EZSwipeViewController 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章