iOS11引入了trailingSwipeActionsConfigurationForRowAt
(并领先......)。这是否意味着我现在必须实施
editActionsForRowAt
?如何让模拟器运行iOS10模拟以查看我的应用程序在后台操作系统中的行为?由于现在一切都是iOS11,我不确定我的应用程序将在该版本中如何?
澄清:我想要对行进行操作,但我不希望在iOS11中使用performsFirstActionWithFullSwipe
的默认行为。如果我只是实现editActionsForRowAt
,那么iOS11会完全滑动。
如果您想要某种形式的行动作,您需要:
只实施editActionsForRowAt
,它适用于iOS 10,11和12。
要么:
在iOS 10上实现editActionsForRowAt
,并在iOS 11或更新版本上实现尾随/滑动方法 - 这些方法稍微有点儿。
要么:
忽略iOS 10并且仅支持iOS 11或更新的尾随/滑动操作,因为大多数客户无论如何都可能正在运行iOS 11 - 并且行操作通常被认为是可选功能。
如果您不想完全滑动行为,则只能在iOS 11或更高版本上实现此功能,您可以将performsFirstActionWithFullSwipe
设置为false
iOS 11之前无法使用完全滑动方法。它们无法在iOS 10中使用。
根据您的要求:
我想要对行进行操作,但我不希望在iOS11中执行performFirstActionWithFullSwipe的默认行为。如果我只是实现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的说法,
滑动操作
这些方法取代了-editActionsForRowAtIndexPath:如果实现的话
返回nil以获取默认滑动操作
因此,您可以实现这两种方法来获取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
}
如果您仍然遇到任何问题,请告诉我。
它被声明为可选,所以不,你不必实现它。我假设默认实现是什么都不做
根据我的经验,如果你想要一个编辑模式,以及自定义的滑动,你需要在iOS 11上使用editActions…
以及trailing/leading…
。