いつもお世話になります。
ご存知でしたら教えてください。
UITableView
にスワイプアクションの機能を追加しているのですが、
たとえば、leadingSwipeActionに制限を加えずに、trailingSwipeActionをStatusというBool型変数の内容によって出し分けることができるでしょうか?
tableView(_:trailingSwipeActionsConfigurationForRowAt:)
の要求する戻り値(UISwipeActionsConfiguration?
)に
nilを返してあげればよいかと思ったのですが、nilを返すと、performsFirstActionWithFullSwipe
にfalseを設定して返してあげられないので、フルスワイプ時のSwipeAction表示が出てしまいます。
tableView(_:canEditRowAt:)
のなかで条件分けして設定もしてみたのですが、leading/trailingともに制限してしまうようで希望した動きが実現できません
swift
1func tableView(_ tableView: UITableView, 2 trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) 3 -> UISwipeActionsConfiguration? { 4 5 let delete 6 = UIContextualAction(style: .destructive, 7 title: "削除") { (action, sourceView, completionHandler) in 8 completionHandler(true) 9 self.deleteData() 10 } 11 12 if status { 13 let swipeAction = UISwipeActionsConfiguration(actions: [delete]) 14 swipeAction.performsFirstActionWithFullSwipe = false 15 return swipeAction 16 } else { 17 /* 18 ここでnilを返せばtrailingSwipeActionは表示されないが、 19 swipeAction.performsFirstActionWithFullSwipe = falseが 20 フルスワイプ時に実行される1番目のActionが表示されてしまう。 21 */ 22 return nil 23 } 24}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。