[IOS]table view를 이용해서 리스트 보여주기

NOAH·2021년 7월 13일
0

ios

목록 보기
11/15

UI table view 에서 중요한 것은

  • 몇 줄을 보여줄 것인가?
  • 어떻게 보여줄 것이냐 ?

각 줄을 표현할 때 그 줄을 IOS에서는 'cell'이라고 표현한다.


import UIKit

class CoronaViewController: UIViewController {

    
    @IBOutlet weak var tableView: UITableView!
 
    let countries: [Country] =
        [
            Country(name: "China", numOfConfirmedCases: 4409),
            Country(name: "Korea", numOfConfirmedCases: 1130),
            Country(name: "Japan", numOfConfirmedCases: 1200),
        ]
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
}




// 델리게이트 패턴 : tablieview가 tableViewController에 테이블 뷰를 생성하는데
// 필요한 정보들을 물어본다.
extension CoronaViewController: UITableViewDataSource{
    // 테이블 뷰가 몇줄인가?
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // 몇 줄인지 리턴
        return countries.count
    }
    // 각 줄을 어떻게 표현할 할까?
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        // 어떻게 표현할 지는 이미 테이블 뷰안의 Cell에 구성해두었음
        // 테이블 뷰속의 셀을 뽑아오는 메서드,
        // optional 이기 떄문에 값이 없을 수도 있으므로 guard로 받아러 리턴해주자.
        guard let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? CoronaVirusCell else {
            return UITableViewCell()
        }
        
        // countries 배열을 차례대로
        let country = countries[indexPath.row]
        // cell의 나라와 확진사 수만 업데이트 시켜보자.
        cell.update(country: country)
        return cell
    }
}

class CoronaVirusCell: UITableViewCell {
    
    @IBOutlet weak var countryName: UILabel!
    @IBOutlet weak var numOfConfirmedCases: UILabel!
    
    //celld의 업데이트를 시키면 country의 이름과 확진자 수를 전달하는 함수
    func update(country: Country){
        
        countryName.text = country.name
        numOfConfirmedCases.text = "\(country.numOfConfirmedCases)"
    }
}

struct Country {
    let name: String
    let numOfConfirmedCases: Int
}




0개의 댓글