iOS11 Swipe Actions
개시하다
iOS 11에서 스위칭 동작 설치가 변경되었기 때문에
한번 해봤어요.
Updating Your App for iOS 11
iOS 11의 변경 사항
① UItable ViewDelegate에서 "Swipe actions"관련 방법이 추가되었습니다.
UITableView.h// Swipe actions
// These methods supersede -editActionsForRowAtIndexPath: if implemented
// return nil to get the default swipe actions
- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView leadingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
메서드 이름
설명
leadingSwipeActionsConfigurationForRowAt
왼쪽에서 오른쪽으로 지우는 방법
trailingSwipeActionsConfigurationForRowAt
오른쪽에서 왼쪽으로 지울 때 사용하는 방법
② 기타 관련류
메서드 이름
설명
UIContextualAction
버튼 제목, 아이콘 및 선택한 작업의 클래스를 정의합니다.
UISwipeActionsConfiguration
UIContextual Action 클래스 관리
견본
작업이 실행된 후, success 방법 매개 변수에 진짜를 지정하면 닫습니다.
버튼의 기본 색상은 lightGray입니다.
완성판은 여기.
ViewController.swift// MARK: - UITableViewDelegate
extension ViewController: UITableViewDelegate {
//左から右へスワイプ
func tableView(_ tableView: UITableView,
leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let editAction = UIContextualAction(style: .normal,
title: "編集",
handler: { (action: UIContextualAction, view: UIView, success :(Bool) -> Void) in
success(true)
})
editAction.image = UIImage(named: "edit")
editAction.backgroundColor = .blue
let copyAction = UIContextualAction(style: .normal,
title: "コピー",
handler: { (action: UIContextualAction, view: UIView, success :(Bool) -> Void) in
success(true)
})
copyAction.image = UIImage(named: "copy")
return UISwipeActionsConfiguration(actions: [editAction, copyAction])
}
///右から左へスワイプ
func tableView(_ tableView: UITableView,
trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let moveAction = UIContextualAction(style: .normal,
title: "移動",
handler: { (action: UIContextualAction, view: UIView, success :(Bool) -> Void) in
success(true)
})
moveAction.image = UIImage(named: "move")
moveAction.backgroundColor = .green
let removeAction = UIContextualAction(style: .normal,
title: "削除",
handler: { (action: UIContextualAction, view: UIView, success :(Bool) -> Void) in
success(true)
})
removeAction.image = UIImage(named: "trash")
removeAction.backgroundColor = .red
return UISwipeActionsConfiguration(actions: [removeAction, moveAction])
}
}
참고 자료
iOS 10 설치 때까지
ViewController.swift// MARK: - UITableViewDelegate
extension ViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView,
editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
return addSwipeEvent()
}
/// セルのアクションを有効にする
///
/// - Parameters:
/// - tableView: TableView
/// - indexPath: インデックスパス
/// - Returns: 有効か?
func tableView(_ tableView: UITableView,
canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
/// スワイプされたときの処理
///
/// - Parameters:
/// - content: タイトル
/// - index: セルのインデックス
func swipeContentsTap(content: String, index: Int) {
print(index.description + "番のセル → " + "内容:" + content)
}
/// Swipeイベントを登録する
///
/// - Returns: Swipeイベント一覧
private func addSwipeEvent() -> [UITableViewRowAction]? {
let swipeCellA = UITableViewRowAction(style: .default, title: "内容A") { _, index in
self.swipeContentsTap(content: "CellA", index: index.row)
}
let swipeCellB = UITableViewRowAction(style: .default, title: "内容B") { _, index in
self.swipeContentsTap(content: "CellB", index: index.row)
}
let swipeCellC = UITableViewRowAction(style: .default, title: "内容C") { _, index in
self.swipeContentsTap(content: "CellC", index: index.row)
}
swipeCellA.backgroundColor = .blue
swipeCellB.backgroundColor = .red
swipeCellC.backgroundColor = .green
return [swipeCellC, swipeCellB, swipeCellA] // A,B,Cという順で表示される
}
}
Reference
이 문제에 관하여(iOS11 Swipe Actions), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/eKushida/items/bf02d0b44eca14cfbfdc
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// Swipe actions
// These methods supersede -editActionsForRowAtIndexPath: if implemented
// return nil to get the default swipe actions
- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView leadingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
// MARK: - UITableViewDelegate
extension ViewController: UITableViewDelegate {
//左から右へスワイプ
func tableView(_ tableView: UITableView,
leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let editAction = UIContextualAction(style: .normal,
title: "編集",
handler: { (action: UIContextualAction, view: UIView, success :(Bool) -> Void) in
success(true)
})
editAction.image = UIImage(named: "edit")
editAction.backgroundColor = .blue
let copyAction = UIContextualAction(style: .normal,
title: "コピー",
handler: { (action: UIContextualAction, view: UIView, success :(Bool) -> Void) in
success(true)
})
copyAction.image = UIImage(named: "copy")
return UISwipeActionsConfiguration(actions: [editAction, copyAction])
}
///右から左へスワイプ
func tableView(_ tableView: UITableView,
trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let moveAction = UIContextualAction(style: .normal,
title: "移動",
handler: { (action: UIContextualAction, view: UIView, success :(Bool) -> Void) in
success(true)
})
moveAction.image = UIImage(named: "move")
moveAction.backgroundColor = .green
let removeAction = UIContextualAction(style: .normal,
title: "削除",
handler: { (action: UIContextualAction, view: UIView, success :(Bool) -> Void) in
success(true)
})
removeAction.image = UIImage(named: "trash")
removeAction.backgroundColor = .red
return UISwipeActionsConfiguration(actions: [removeAction, moveAction])
}
}
// MARK: - UITableViewDelegate
extension ViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView,
editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
return addSwipeEvent()
}
/// セルのアクションを有効にする
///
/// - Parameters:
/// - tableView: TableView
/// - indexPath: インデックスパス
/// - Returns: 有効か?
func tableView(_ tableView: UITableView,
canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
/// スワイプされたときの処理
///
/// - Parameters:
/// - content: タイトル
/// - index: セルのインデックス
func swipeContentsTap(content: String, index: Int) {
print(index.description + "番のセル → " + "内容:" + content)
}
/// Swipeイベントを登録する
///
/// - Returns: Swipeイベント一覧
private func addSwipeEvent() -> [UITableViewRowAction]? {
let swipeCellA = UITableViewRowAction(style: .default, title: "内容A") { _, index in
self.swipeContentsTap(content: "CellA", index: index.row)
}
let swipeCellB = UITableViewRowAction(style: .default, title: "内容B") { _, index in
self.swipeContentsTap(content: "CellB", index: index.row)
}
let swipeCellC = UITableViewRowAction(style: .default, title: "内容C") { _, index in
self.swipeContentsTap(content: "CellC", index: index.row)
}
swipeCellA.backgroundColor = .blue
swipeCellB.backgroundColor = .red
swipeCellC.backgroundColor = .green
return [swipeCellC, swipeCellB, swipeCellA] // A,B,Cという順で表示される
}
}
Reference
이 문제에 관하여(iOS11 Swipe Actions), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/eKushida/items/bf02d0b44eca14cfbfdc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)