본문 바로가기
iOS Swift/Study

[Swift] 알람앱 - 타이머(5) 테이블뷰 높이 동적으로 그리기

by 야고이 2024. 5. 21.
728x90

스크롤뷰 안에 테이블뷰를 넣으니 스크롤 안에 스크롤이 있는격이라 문제가 생겼다

테이블뷰 높이를 설정해 주면 문제 없었지만

내가 구현해 주고 싶은건 테이블뷰에 셀이 추가 되거나 삭제 될 때마다 높이가 달라져야 해서 함수를 만들어서 주었다

func reloadTableView() {
    if timerLists.count <= 0 {
        recentlyUsedLabel.isHidden = true
        recentlyUsedTabelView.isHidden = true
    }
    else {
        let rowHeight = 36
        recentlyUsedTabelView.isHidden = false
        recentlyUsedLabel.isHidden = false
        recentlyUsedTabelView.snp.remakeConstraints {
            $0.top.equalTo(recentlyUsedLabel.snp.bottom).offset(20)
            $0.leading.bottom.trailing.equalToSuperview()
            $0.height.equalTo(timerLists.count * rowHeight)
        }
        recentlyUsedTabelView.reloadData()
    }
}

최근항목 리스트 배열에 아무것도 담기지 않으면 테이블뷰를 숨김합니다

배열에 추가가 되면 테이블뷰를 보여주고 배열에 담긴 갯수만큼 테이블뷰를 그려줍니다

기존에 그린 테이블뷰와 겹쳐서 오류가 날 수 있으니 remakeConstraints 로 다시 그려줍니다

그리고 테이블뷰 리로드!

 

 

 

테이블뷰 셀을 그려준는 메서드에 위 함수를 추가해 줍니다

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        let timerToDelete = timerLists[indexPath.row]
        deleteTimer(timer: timerToDelete)
        timerLists.remove(at: indexPath.row)
        recentlyUsedTabelView.deleteRows(at: [indexPath], with: .fade)
        reloadTableView()
        print("timerLists\(timerLists)")
    }
}

728x90

댓글