[iOS] TableView, NavigationView

팔랑이·2024년 4월 1일
0

iOS/Swift

목록 보기
9/71
post-thumbnail

TableView

목록 형태의 View 표시하는 컴포넌트.
세로 스크롤이 가능한 목록을 만들 수 있으며, 각 항목은 row로 표현된다.

import UIKit

class MyTableViewController: UIViewController {
    
    
    @IBOutlet weak var myTableView: UITableView!
    
    let friendsNames: [String] = ["Eunae", "Woong", "Jin", "Yeop"]
    
    override func viewDidLoad() {
        super.viewDidLoad()
        myTableView.backgroundColor = .lightGray
        myTableView.delegate = self
        myTableView.dataSource = self
        
    }
}
    
    
extension MyTableViewController: UITableViewDelegate, UITableViewDataSource {
        
        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return friendsNames.count
        }
        
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell = myTableView.dequeueReusableCell(withIdentifier: "MyFirstCell", for: indexPath)
            
            cell.textLabel?.text = friendsNames[indexPath.row]
            
            return cell
        }
        
    }

override viewDidLoad()

viewDidLoad() 메서드를 오버라이딩하는 부분

  • tableView.dataSource = self: UITableView의 dataSource 프로퍼티를 현재 뷰 컨트롤러 인스턴스(self)로 설정. 이는 뷰 컨트롤러가 테이블 뷰의 데이터 소스 역할을 하도록 지정하는 것으로, 테이블 뷰에 표시될 데이터와 관련된 모든 요청을 처리하기 위해 필요하다.

  • tableView.delegate = self: 마찬가지로, UITableView의 delegate 프로퍼티를 현재 뷰 컨트롤러 인스턴스로 설정. 이는 뷰 컨트롤러가 테이블 뷰의 delegate 역할을 하도록 지정하는 것으로, 테이블 뷰의 행동과 관련된 사용자의 상호작용(예: 셀 선택, 행 높이 설정 등)을 처리하기 위해 필요하다.

extension 부분 - UITableViewDelegate, UITableViewDataSource

위 코드들이 실행되기 위해서는 현재 뷰 콘트롤러 클래스가 UITableViewDelegate, UITableViewDataSource 프로토콜을 준수해야 한다. 따라서 이 코드에서도, MyTableViewController 클래스에 확장하여 이 두 가지 프로토콜을 추가한다.

  • tableView - numberOfRowsInSection : 출력하려는 목록의 열의 수를 반환하며, 위 코드에서는 선언된 Array의 길이를 반환함으로써 Array의 모든 값을 출력하려고 하고 있음.
  • tableView - cellForRowAt : dequeueReusableCell(withIdentifier:for:) 메서드를 사용해 재사용 가능한 셀을 설정. (이 부분은 강사님이 지금 단계에선 일단 후루룩 넘어가심)
profile
정체되지 않는 성장

0개의 댓글