TableView의 Cell 교환에서 View가 투과된 당신에게

5800 단어 UITableViewSwiftiOS

침목


iOS 응용 프로그램 하면 UITableView 입니다.그렇게 지도 모른다, 아마, 아마...
이번에는 UITableView의 작은 단락입니다.
UITableView는 비교적 간단한 설정으로 셀을 교환합니다.
extension TableWorkViewController: UITableViewDataSource {
    // ...省略...

    // 移動可能
    func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
        return true
    }

    // 移動実行
    func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
        print("source: \(sourceIndexPath)")
        print("dest: \(destinationIndexPath)")
    }
}
이런 느낌으로 설정, 어디
self.tableView.isEditing = true
하면, 만약, 만약...

이런 느낌으로 교환 아이콘을 표시합니다.
기본적인 것은 이렇다.간단하다.
그럼 실제로 바꿔보세요.

눈치채셨습니까?
셀 위에 UIView 놓여 있지만 보이지 않습니다.
교체할 때 단원에 앉는 것이 투명한 것 같다.
징그러우니 대책을 생각해 보자.

호스트


그래서 본론.
자신도 소박하게 빠져들었지만 좋은 파워 기술로 해결한 사람이 있어서 따라하게 됐어요.
참조:
https://medium.com/@vhart/tableview-cell-reordering-keep-the-color-4c03623d2399
최고!이 파워 센스!
원소재를 보면 알 수 있듯이 이동할 때UIViewUIView는 투명하게 설정되므로 강제로 색을 유지해야 한다.
그래서 만든 게 여기 있어요.
/// セルの入れ替え時に色をのキープしておくためのView
class TableWorkColorKeepView: UIView {

    /// キープ用のbackgroundColor
    @IBInspectable var keepBackgroundColor: UIColor = .clear {
        didSet {
            self.backgroundColor = self.keepBackgroundColor
        }
    }

    /// 背景色
    override var backgroundColor: UIColor? {
        set {
            // キープしている色と異なればリターン
            guard newValue == keepBackgroundColor else {
                return
            }
            super.backgroundColor = newValue
        }
        get {
            return super.backgroundColor
        }
    }
}
이걸 사용하면...

그렇습니다.
유지용 색상을 준비했는데 배경색이 변경되었을 때 그 색상과 다르다면 그냥 무시했을 뿐입니다.
배경색을 설정하고 싶은 경우backgroundColor의 사람이 설정한 느낌.
(Storyboard로 초기 값을 설정하고 싶어서keepBackgroundColor

마지막


파워 스킬이니 사용법에 주의하세요.
더 똑똑한 방법이 있으면 알려주세요.

좋은 웹페이지 즐겨찾기