[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.)