对于 UITableView,我是否需要实施 trailingSwipeActionsConfigurationForRowAt and/or editActionsForRowAt?
For UITableView do I need to implement trailingSwipeActionsConfigurationForRowAt and/or editActionsForRowAt?
iOS11 引入了 trailingSwipeActionsConfigurationForRowAt
(并领先...)。这是否意味着我现在必须实施
- trailing/leading iOS11 AND
控制滑动的方法
editActionsForRowAt
对于 iOS10?
如何让模拟器进行 运行 iOS10 模拟以查看我的应用程序在后台 OS 中的行为?由于现在一切都是 iOS11,我不确定我的应用程序在该版本中的表现如何?
澄清一下:我想要对行执行操作,但我不想要 performsFirstActionWithFullSwipe
的 iOS11 中的默认行为。如果我只是实施 editActionsForRowAt
,那么 iOS11 会执行完整的滑动操作。
它被声明为可选的,所以不,您不必实现它。我假设默认实现是什么都不做
如果您想要某种形式的行操作,您需要:
仅 editActionsForRowAt
实施,它将适用于 iOS 10、11、12 和 13。但它在 iOS 14(或更新版本)中不可用。
或:
在 iOS 10 上实现 editActionsForRowAt
,并在 iOS 11 或更高版本上实现 trailing/swiping 方法 - 稍微更高级。
或:
忽略 iOS 10,只支持 iOS 11 或更新的 trailing/swiping 操作,因为您的大多数客户可能都是 运行 iOS 11 -无论如何,行操作通常被视为可选功能。
如果您不想要完整的滑动行为,您只能在 iOS 11 或更高版本上实现此功能,您可以将 performsFirstActionWithFullSwipe
设置为 false
完整的滑动方法在 iOS 11 之前不可用。它们在 iOS 10.
中不起作用
根据您的要求:
我想要对行执行操作,但我不想要 performsFirstActionWithFullSwipe iOS11 中的默认行为。如果我只是实施 editActionsForRowAt,那么 iOS11 会完全滑动。
在iOS-10及以下,
要让 edit actions
在 UITableView
中工作,只需实施以下方法:
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]
}
在iOS-11,
引入了 2 种新方法来支持 UITableView
中的编辑,即 leadingSwipeActionsConfigurationForRowAt
和 trailingSwipeActionsConfigurationForRowAt
。
根据 Apple,
Swipe actions
These methods supersede
-editActionsForRowAtIndexPath: if implemented
return nil to get the default swipe actions
因此,您可以实施这两种方法来获得 iOS-11 特定行为。即使你不这样做 editActionsForRowAt
也会被调用。
如果不想要iOS-11中的default full swipe behaviour of edit action
,只需设置performsFirstActionWithFullSwipe to false
.
示例:
@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
}
如果您仍然遇到任何问题,请告诉我。
根据我的经验,如果您想要编辑模式以及自定义滑动,您确实需要 editActions…
以及 trailing/leading…
on iOS 11。
iOS11 引入了 trailingSwipeActionsConfigurationForRowAt
(并领先...)。这是否意味着我现在必须实施
- trailing/leading iOS11 AND 控制滑动的方法
editActionsForRowAt
对于 iOS10?
如何让模拟器进行 运行 iOS10 模拟以查看我的应用程序在后台 OS 中的行为?由于现在一切都是 iOS11,我不确定我的应用程序在该版本中的表现如何?
澄清一下:我想要对行执行操作,但我不想要 performsFirstActionWithFullSwipe
的 iOS11 中的默认行为。如果我只是实施 editActionsForRowAt
,那么 iOS11 会执行完整的滑动操作。
它被声明为可选的,所以不,您不必实现它。我假设默认实现是什么都不做
如果您想要某种形式的行操作,您需要:
仅 editActionsForRowAt
实施,它将适用于 iOS 10、11、12 和 13。但它在 iOS 14(或更新版本)中不可用。
或:
在 iOS 10 上实现 editActionsForRowAt
,并在 iOS 11 或更高版本上实现 trailing/swiping 方法 - 稍微更高级。
或:
忽略 iOS 10,只支持 iOS 11 或更新的 trailing/swiping 操作,因为您的大多数客户可能都是 运行 iOS 11 -无论如何,行操作通常被视为可选功能。
如果您不想要完整的滑动行为,您只能在 iOS 11 或更高版本上实现此功能,您可以将 performsFirstActionWithFullSwipe
设置为 false
完整的滑动方法在 iOS 11 之前不可用。它们在 iOS 10.
中不起作用根据您的要求:
我想要对行执行操作,但我不想要 performsFirstActionWithFullSwipe iOS11 中的默认行为。如果我只是实施 editActionsForRowAt,那么 iOS11 会完全滑动。
在iOS-10及以下,
要让 edit actions
在 UITableView
中工作,只需实施以下方法:
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]
}
在iOS-11,
引入了 2 种新方法来支持 UITableView
中的编辑,即 leadingSwipeActionsConfigurationForRowAt
和 trailingSwipeActionsConfigurationForRowAt
。
根据 Apple,
Swipe actions
These methods supersede -editActionsForRowAtIndexPath: if implemented
return nil to get the default swipe actions
因此,您可以实施这两种方法来获得 iOS-11 特定行为。即使你不这样做 editActionsForRowAt
也会被调用。
如果不想要iOS-11中的default full swipe behaviour of edit action
,只需设置performsFirstActionWithFullSwipe to false
.
示例:
@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
}
如果您仍然遇到任何问题,请告诉我。
根据我的经验,如果您想要编辑模式以及自定义滑动,您确实需要 editActions…
以及 trailing/leading…
on iOS 11。