[iOS]<MemoApp> TableView 구현 이론

RudinP·2023년 11월 4일
0

Study

목록 보기
108/227

TableView 구현 이론

  1. 테이블 뷰 배치
  2. 프로토타입 셀 디자인, 셀 아이덴티파이어 지정
  3. 데이터 소스, 델리게이트 연결
  4. 데이터 소스 구현
  5. 델리게이트 구현

데이터 소스

  • 데이터 소스: UITableViewDataSource 프로토콜을 채택한 형식
    • UITableViewDataSource: 테이블 뷰를 표시하는데 필요한 메소드가 선언되어있음
  • 테이블뷰는 어떤 데이터를 어떤 디자인으로 몇개를 출력해야할지 모름 -> 항상 데이터소스에 물어봐야 함.
    • 데이터소스에 구현되어 있는 메소드를 호출하는 방식

개수: 몇 개의 셀을 표시하는지 리턴

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return Memo.dummyMemoList.count
    }

어떤 디자인으로 어떤 데이터를 표시하는지

  • 개별 셀을 출력할때마다 반복적으로 호출됨
  • IndexPath: 목록 내에서 특정 셀 위치를 표현할 때 사용
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        //메인스토리보드에서 생성했던 프로토타입셀이 생성되어 저장됨
        //프로토타입 셀에서 withIdentifier에 입력된 identifier을 가진 셀을 자동으로 만들어줌
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
		// 셀이 생성되는 시점에서 비어있기 때문에 내용을 채워줌
        // Configure the cell...
        // indexPath.row 속성에 접근하면 몇번째 셀인지 확인 가능
        let target = Memo.dummyMemoList[indexPath.row]
        //Subtitle 스타일에는 textLabel 과 detailTextLabel이 있음
        cell.textLabel?.text = target.content
        cell.detailTextLabel?.text = target.insertDate.description
        
        return cell
    }

위의 두 가지 메소드는 필수임

델리게이트

  • 테이블 뷰 터치했을 때 어떻게 해야하는지 알려주는 부분
  • 필수가 아님
  • 이벤트 처리가 필요없다면 구현하지 않아도 됨
  • 이 부분은 다른 게시글에서 정리 예정
profile
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>

0개의 댓글