[Swift] UItableView의 편집 모드를 제어하여 삭제만 허용, 정렬만 허용
11193 단어 UITableViewSwiftiOS
나는 기본적인 사용 방법은 아래의 내용을 참조하여 이해할 수 있다고 생각한다.
・UItableView 편집 모드를 사용하여 데이터 삭제 및 정렬
편집 가능한 Cell의 지정 사용
UITableViewDataSource
방법은 다음과 같습니다.// 1. 編集モードを許可するIndexPathの指定
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool
// 2. ソートを許可するIndexPathの指定
func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool
1.true
셀은 삭제할 수 있습니다,2.의 정렬이 유효한지 여부입니다.2.
true
셀은 정렬 가능즉,
표준은 정렬만 할 수 없습니다!!!
나는 사용 빈도가 많지 않다고 생각했지만, 나는 강제로 시험해 보았기 때문에 공유되었다.
편집 모드에서의 동작
우선tableView.editing = true
시 서로 다른 설정의 행동을 살펴봅시다.
·canEdit->가짜,canMove>가짜
둘 다 때가 됐지, 물론 아무 일도 일어나지 않았지.
· 가짜,canEdit->진짜
앞에서 말한 바와 같이 삭제만 할 수 있다.
·canMove->가짜,canEdit->가짜
이 경우 canMove->true
라이센스가 없으므로 아무 일도 일어나지 않습니다.
・tableView:canEditRowAtIndexPath:canEdit->참
정렬을 하려면 두 가지 측면을 모두 canMove->true
로 설정해야 하지만 그림처럼 삭제할 수도 있다.
편집 모드의 화면 구성
편집 모드에서 아래 그림처럼 축소true
된UITableViewCell
, 양쪽에 추가ContentView
.
삭제 단추 숨기기
실제로 숨기려면 몇 가지 방법이 있을 수 있으니 가장 간단한 방법을 소개해 드리겠습니다.
어떻게 해야 할지는 표 보기를 확대하고 삭제 단추를 화면 밖으로 밀어내는 것이다.
이 정도야, 그렇게 생각하는 사람한테는 m(...)웃다
너비를 변경하는 방법은 UItableView의 왼쪽 여백UITableViewCellEditControl
을 조정합니다.
다른 장소NSLayoutConstraint
의 조정에 비해 조정frame
코드량이 줄어들고 조정하기 쉬운 경우도 많다NSLayoutConstraint
의UITableViewCell
는 편집 모드에 들어갈 때 양쪽 끝이 모두 수축ContentView
된다.
그래서 왼쪽 공백true
을 줄이면 잘 숨겨진다.
텍스트만 보면 이해하기 어려우므로 주요 부분의 코드를 게재해야 한다.// 編集タイプ
enum EditType {
case None, All, Delete, Sort
}
var editType = EditType.None {
willSet {
self.tableView.editing = true
self.leftConstraint.constant = 0
if newValue == .None { self.tableView.editing = false }
else if newValue == .Sort { self.leftConstraint.constant = -38 }
self.tableView.reloadData()
}
}
/**
* UITableView DataSource --------
*/
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
switch self.editType {
case .None : return false
default : return true
}
}
func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
switch self.editType {
case .None, .Delete : return false
default : return true
}
}
38px
의 값을 변경하여 편집 모드를 전환할 수 있습니다.
실행 결과
이상 코드는 NSLayoutConstraint
일 때의 실행 결과입니다.
네, 잘 숨었어요.
주의점
삭제(정렬)하기 싫은 셀이 있다면 공을 들여야 한다.
TableView 위 두 개의 예를 고정시키려는 경우를 나타냅니다.func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
switch self.editType {
case .None : return false
case .Sort : return true // ここ重要
default :
if indexPath.row < 2 { return false }
else { return true }
}
}
func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
switch self.editType {
case .None, .Delete : return false
default :
if indexPath.row < 2 { return false }
else { return true }
}
언뜻 보기에는 일반적인 처리이지만 평론 부분처럼 editType
할 때는 답장self.editType = .Sort
해야 한다.
이번 상황은 서열만 가능한 상황에서 가지고 놀기 때문에.Sort
이 처리를 하지 않으면 고정된 셀이 보이지 않는다.
최후
이번에는 정렬만 가능한 TableView를 설치해 봤습니다.
헤더, 포터가 있으면 프레임을 조정해야 하지만 간단하게 실현할 수 있다.
이번처럼 다양한 상황에 대처할 수 있는 엔지니어가 되고 싶어요.
그럼 iOS 잘 살자!!!!
Reference
이 문제에 관하여([Swift] UItableView의 편집 모드를 제어하여 삭제만 허용, 정렬만 허용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/krimpedance/items/c930d808f4eeb12bdb5c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
편집 모드에서 아래 그림처럼 축소
true
된UITableViewCell
, 양쪽에 추가ContentView
.삭제 단추 숨기기
실제로 숨기려면 몇 가지 방법이 있을 수 있으니 가장 간단한 방법을 소개해 드리겠습니다.
어떻게 해야 할지는 표 보기를 확대하고 삭제 단추를 화면 밖으로 밀어내는 것이다.
이 정도야, 그렇게 생각하는 사람한테는 m(...)웃다
너비를 변경하는 방법은 UItableView의 왼쪽 여백UITableViewCellEditControl
을 조정합니다.
다른 장소NSLayoutConstraint
의 조정에 비해 조정frame
코드량이 줄어들고 조정하기 쉬운 경우도 많다NSLayoutConstraint
의UITableViewCell
는 편집 모드에 들어갈 때 양쪽 끝이 모두 수축ContentView
된다.
그래서 왼쪽 공백true
을 줄이면 잘 숨겨진다.
텍스트만 보면 이해하기 어려우므로 주요 부분의 코드를 게재해야 한다.// 編集タイプ
enum EditType {
case None, All, Delete, Sort
}
var editType = EditType.None {
willSet {
self.tableView.editing = true
self.leftConstraint.constant = 0
if newValue == .None { self.tableView.editing = false }
else if newValue == .Sort { self.leftConstraint.constant = -38 }
self.tableView.reloadData()
}
}
/**
* UITableView DataSource --------
*/
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
switch self.editType {
case .None : return false
default : return true
}
}
func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
switch self.editType {
case .None, .Delete : return false
default : return true
}
}
38px
의 값을 변경하여 편집 모드를 전환할 수 있습니다.
실행 결과
이상 코드는 NSLayoutConstraint
일 때의 실행 결과입니다.
네, 잘 숨었어요.
주의점
삭제(정렬)하기 싫은 셀이 있다면 공을 들여야 한다.
TableView 위 두 개의 예를 고정시키려는 경우를 나타냅니다.func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
switch self.editType {
case .None : return false
case .Sort : return true // ここ重要
default :
if indexPath.row < 2 { return false }
else { return true }
}
}
func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
switch self.editType {
case .None, .Delete : return false
default :
if indexPath.row < 2 { return false }
else { return true }
}
언뜻 보기에는 일반적인 처리이지만 평론 부분처럼 editType
할 때는 답장self.editType = .Sort
해야 한다.
이번 상황은 서열만 가능한 상황에서 가지고 놀기 때문에.Sort
이 처리를 하지 않으면 고정된 셀이 보이지 않는다.
최후
이번에는 정렬만 가능한 TableView를 설치해 봤습니다.
헤더, 포터가 있으면 프레임을 조정해야 하지만 간단하게 실현할 수 있다.
이번처럼 다양한 상황에 대처할 수 있는 엔지니어가 되고 싶어요.
그럼 iOS 잘 살자!!!!
Reference
이 문제에 관하여([Swift] UItableView의 편집 모드를 제어하여 삭제만 허용, 정렬만 허용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/krimpedance/items/c930d808f4eeb12bdb5c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// 編集タイプ
enum EditType {
case None, All, Delete, Sort
}
var editType = EditType.None {
willSet {
self.tableView.editing = true
self.leftConstraint.constant = 0
if newValue == .None { self.tableView.editing = false }
else if newValue == .Sort { self.leftConstraint.constant = -38 }
self.tableView.reloadData()
}
}
/**
* UITableView DataSource --------
*/
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
switch self.editType {
case .None : return false
default : return true
}
}
func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
switch self.editType {
case .None, .Delete : return false
default : return true
}
}
이상 코드는
NSLayoutConstraint
일 때의 실행 결과입니다.네, 잘 숨었어요.
주의점
삭제(정렬)하기 싫은 셀이 있다면 공을 들여야 한다.
TableView 위 두 개의 예를 고정시키려는 경우를 나타냅니다.func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
switch self.editType {
case .None : return false
case .Sort : return true // ここ重要
default :
if indexPath.row < 2 { return false }
else { return true }
}
}
func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
switch self.editType {
case .None, .Delete : return false
default :
if indexPath.row < 2 { return false }
else { return true }
}
언뜻 보기에는 일반적인 처리이지만 평론 부분처럼 editType
할 때는 답장self.editType = .Sort
해야 한다.
이번 상황은 서열만 가능한 상황에서 가지고 놀기 때문에.Sort
이 처리를 하지 않으면 고정된 셀이 보이지 않는다.
최후
이번에는 정렬만 가능한 TableView를 설치해 봤습니다.
헤더, 포터가 있으면 프레임을 조정해야 하지만 간단하게 실현할 수 있다.
이번처럼 다양한 상황에 대처할 수 있는 엔지니어가 되고 싶어요.
그럼 iOS 잘 살자!!!!
Reference
이 문제에 관하여([Swift] UItableView의 편집 모드를 제어하여 삭제만 허용, 정렬만 허용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/krimpedance/items/c930d808f4eeb12bdb5c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
switch self.editType {
case .None : return false
case .Sort : return true // ここ重要
default :
if indexPath.row < 2 { return false }
else { return true }
}
}
func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
switch self.editType {
case .None, .Delete : return false
default :
if indexPath.row < 2 { return false }
else { return true }
}
이번에는 정렬만 가능한 TableView를 설치해 봤습니다.
헤더, 포터가 있으면 프레임을 조정해야 하지만 간단하게 실현할 수 있다.
이번처럼 다양한 상황에 대처할 수 있는 엔지니어가 되고 싶어요.
그럼 iOS 잘 살자!!!!
Reference
이 문제에 관하여([Swift] UItableView의 편집 모드를 제어하여 삭제만 허용, 정렬만 허용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/krimpedance/items/c930d808f4eeb12bdb5c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)