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 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Swift 反射

Swift入门系列--Swift官方文档(2.2)--中文翻译--About Swift 关于Swift

swift 示例BS swift.swift

swift swift_bug.swift

ios 整理(一)swift和oc的区别

swift swift_extension5.swift