준코딩

(ios/Swift) TableView 사용하기 본문

프로그래밍/IOS (Swift)

(ios/Swift) TableView 사용하기

Ljunhyeob - App Dev 2022. 12. 22. 15:57

Xcode : 14.2v

사용언어: Swift , StoryBoard

깃허브주소: https://github.com/Ljunhyeob/TableView

 

 

1. tableview를 추가해줍니다. 원하는 크기대로 조정

 

2.생성한 테이블 뷰 안에 테이블뷰 셀을 생성해줍니다.

 

3.생성한 테이블뷰를 우클릭 한 상태로 드래그 해서 연결해줍니다.

 

4.datasource 와  delegate 를 연결해줍니다.

 

5.cell 을 자기가 원하는데로 수정해줍니다. (저는 라벨 두개를 넣었습니다. 그외 다른 버튼, 이미지 등등 다 가능합니다.)

 

6.viewController에서 새로운 class를 생성합니다 (Cell에 대한 클래스 이므로 저는 TableCell 로 이름 지었습니다. )

 

7. TableCell 을 활성화 시킨 상태에서 인스팩터창 class 이름을 방금 생성한 TableCell 로 연결시켜 줍니다.

 

8. 그리고 cell 안에 생성한걸 class에 연결합니다.

 

9. 그리고 cell에 대한 식별자를 cell로 지정해줍니다. (저기다 하는거 아닙니다..... 저기에 했더니 오류나서 엥.. 하고 삽질했네요)

(식별자 이름을 cell로 지정했는데 왜 찾지 못하는거지 ?? )

(4번째 Restoration Id에다 하는게 아니고... 5번째 칸에 있는 identifier 에 해야하는거였습니다.. 할때마다 틀림..)

 

10. 자 다시 돌아와서 viewController에 UITableViewDataSource와 UITableViewDelegate 프로토콜을 채택해줍니다.

그리고 TableView에 뿌려줄 데이터를 생성했습니다.

11. 그럼 아랫처럼 에러가 나는데 저 프로토콜을 사용하려면 필수 메소드가 있어야하는데 생성하지 않았다고 에러가 나는겁니다.

아래 Fix 버튼을 눌러서 필수 메소드를 생성해줍니다.

12. 필수메소드가 자동으로 생성되었습니다.

 

13. 각 필수 메소드가 어떤 역할인지는 주석으로 적어두었습니다.  끝~

 

 

14. 코드

//
//  ViewController.swift
//  TableViewTest
//
//  Created by 이준협 on 2022/12/22.
//


import UIKit


class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        //row의 갯수를 리턴
        return titleArray.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        //row를 나타낼 cell 설정
        guard let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? TableCell else {
             return UITableViewCell()
         }
        
        cell.title.text = titleArray[indexPath.row]
        cell.contents.text = contentsArray[indexPath.row]
        return cell
    }
    
    
    let titleArray = ["제목1","제목2","제목3"]
    let contentsArray = ["내용1","내용2","내용3"]
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    
}
    


class TableCell: UITableViewCell {
    
    @IBOutlet weak var title: UILabel!
    @IBOutlet weak var contents: UILabel!
}

Comments