首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于UITableView,我需要实现trailingSwipeActionsConfigurationForRowAt和/或editActionsForRowAt吗?

对于UITableView,我需要实现trailingSwipeActionsConfigurationForRowAt和/或editActionsForRowAt吗?
EN

Stack Overflow用户
提问于 2017-11-02 04:55:13
回答 4查看 11.1K关注 0票数 10

iOS11引入了trailingSwipeActionsConfigurationForRowAt (并领导.)。这是否意味着我现在必须

  1. iOS11、控制刷卡的跟踪/引导方法
  2. editActionsForRowAt for iOS10?

如何让模拟器运行iOS10模拟来查看我的应用程序在后台操作系统中的行为?既然现在一切都是iOS11,我不知道我的应用程序在那个版本中会怎么样?

为了澄清:我想要行操作,但我不想要iOS11 of performsFirstActionWithFullSwipe中的默认行为。如果我只是实现editActionsForRowAt,那么iOS11会执行完整的滑动操作。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-11-02 05:08:00

如果您想要某种形式的行操作,则需要:

只实现editActionsForRowAt,它将适用于iOS 10、11、12和13,但在iOS 14 (或更高版本)中不可用。

或者:

editActionsForRowAt 10上实现iOS,并在iOS 11或更高版本上实现跟踪/滑动方法--这些方法稍微好一些。

或者:

忽略iOS 10,只支持iOS 11或更高版本的跟踪/滑动操作,因为大多数客户可能无论如何都在运行iOS 11 -而且行操作通常被认为是一个可选的特性。

如果您不想要完整的滑动行为,则只能在iOS 11或更高版本上实现这一点,在那里可以将performsFirstActionWithFullSwipe设置为false。

完整的滑动方法在iOS 11之前是不可用的,它们在iOS 10中不起作用。

票数 7
EN

Stack Overflow用户

发布于 2017-11-02 06:17:24

根据您的要求:

我想要行操作,但我不想要iOS11 of performsFirstActionWithFullSwipe中的默认行为。如果我只是实现editActionsForRowAt,那么iOS11会执行完整的滑动操作。

iOS-10及以下版本的

要使edit actionsUITableView中工作,只需实现以下方法:

代码语言:javascript
复制
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool
{
    return true
}

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]?
{
    let deleteAction = UITableViewRowAction(style: .destructive, title: "Delete") { (action, indexpath) in
        //YOUR_CODE_HERE
    }
    deleteAction.backgroundColor = .red
    return [deleteAction]
}

In iOS-11,

提出了2种支持UITableView编辑的新方法,即leadingSwipeActionsConfigurationForRowAttrailingSwipeActionsConfigurationForRowAt

据苹果公司称,

滑动动作 这些方法取代-editActionsForRowAtIndexPath:如果实现的话 返回零以获得默认的滑动操作

因此,您可以实现这两种方法来获得iOS-11的特定行为。即使你没有,editActionsForRowAt也会被调用。

如果您不希望default full swipe behaviour of edit actioniOS-11中,只需设置performsFirstActionWithFullSwipe to false即可。

示例:

代码语言:javascript
复制
@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?
{
    return nil
}

@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?
{
    let deleteAction = UIContextualAction(style: .destructive, title: "Delete") { (action, view, handler) in
        //YOUR_CODE_HERE
    }
    deleteAction.backgroundColor = .red
    let configuration = UISwipeActionsConfiguration(actions: [deleteAction])
    configuration.performsFirstActionWithFullSwipe = false
    return configuration
}

如果你还面临任何问题请告诉我。

票数 14
EN

Stack Overflow用户

发布于 2017-11-02 04:59:09

它被声明为可选的,所以不,您不必实现它。我假设默认的实现是什么都不做

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47067840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档