무야호
그만큼 기쁘시다는거지
TableView Drag and drop의 Issue를 모두 해결했다(물론 Local만)
하지만 이번 기능 추가는 나에게 너무 기뻤는데 이 기능을 위해서 4일동안 구현이 되질 않아서였다. 너무 많은 함수들과 그 함수들의 이해를 제대로 하지 못한 무분별한 사용에 함수가 꼬이면서 원하는 실행이 되질 않았다.
분명 밑의 카드를 위로 옮길때는 잘 움직였는데 밑으로 움직이니까 밑의 카드가 위로 올라가질 않았다. 억지로라도
func tableView(_ tableView: UITableView, targetIndexPathForMoveFromRowAt sourceIndexPath: IndexPath, toProposedIndexPath proposedDestinationIndexPath: IndexPath) -> IndexPath {...}
함수를 이용해서 움직이게 했었는데 이 함수가 오히려 발목을 잡고 있었었다. 다른 팀한테 다 물어보다가 동료 중 Cri의 말에 의하면
동일한 Table내에서의 Section 이동은
moveSection()
를 쓰거나 Drag/Drop에서 구현 할 수 있어요.
혹시나 해서 봤더니, 내가 두 메소드를 채택해서 사용하고 있었다. 앱크래쉬는 나지 않았지만, moveSection()을 위해 IndexPath()를 재조정하는 함수까지 사용하다보니 후에 문제가 된 것이다. 당연히 필요할 줄 알았던 함수가 필요없다는 점에서 한가지를 배웠었다.
func tableView(_ tableView: UITableView, performDropWith coordinator: UITableViewDropCoordinator){...}
가장 이상적이라고 생각한 것은 위 함수에서 어디에서 가져왔는지 sourceTableView와 indexPath를 인자값으로 가지는 것인데 그러질 못했다. 같은 팀인 Elly와 이 데이터를 처리하는 과정에서
이렇게 생각해보았는데 1번은 더 나은방법이 있을 것 같구 2번은 데이터를 받아서 저장하려면 결국 변수가 필요하지 않을까 생각했다. 따라서 든 생각은
Singlton
💥
이미 카드에 대한 정보는 encoding하여 data처리화 시켰고 선택된 카드가 위치했던 tableView와 indexPath를 저장하는 싱글톤을 구현해보았다. 처음 구현한것이어서 이렇게 쓰는게 맞는가 싶으면서도 여러 블로그를 돌아다니며 예제를 따라 구현했다.
//Drag&Drop시 Drag할 때 픽업한 카드가 있는 보드type, 그리고 index를 저장할 수 있는 싱글톤객체 입니다.
class CardManager {
static let shared = CardManager()
var boardType : Int
var indexPathSection : Int
private init() {
boardType = -1
indexPathSection = -1
}
func setCard(type : Int, index : Int) {
boardType = type
indexPathSection = index
}
func getBoardType() -> Int {
return boardType
}
func getIndexPathSection() -> Int {
return indexPathSection
}
}
아직 로컬로만 작업해서 내일 있을 네트워크 연결과정도 궁금하다.
하지만 오늘은 스스로 정말 만족하고 기쁜날이다. 무야호~~~