[iOS/Swift] UITableView 섹션 번호 이용해 데이터 전달하기

Nakyung Lee·2023년 7월 13일
0

iOS

목록 보기
4/14

나는 현재 UITableView에 Inset Grouped 스타일을 적용하여 섹션을 row처럼 사용해 아래와 같이 이용하고 있다.

셀을 선택하면 다음 화면으로 넘어가 자세한 일기 내용을 보여주고 싶었다.

그런데 나는 한 섹션 당 모두 row가 하나였기 때문에 row index 번호는 모두 0이었고, section index를 이용해 구분해야 했다.

1️⃣ segue identifier 지정해 주기


다음 화면으로 넘어가도록 연결해 놓은 Segue의 identifier을 작성해 준다.

2️⃣ 다음 ViewController에게 데이터 전달하기

// 데이터 전달
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "diarySegue" {
            if let destination = segue.destination as? DiaryViewController {
                if let selectedIndex =
                    self.tableView.indexPathForSelectedRow {
                    destination.diaryTitle = diaries[selectedIndex[0]].title
                }
            }
        }
    }

selectedIndex를 출력해 보면 [0, 0], [1, 0]과 같이 출력된다. 첫 번째 인덱스가 section 번호이고 두 번째가 row 번호이다.

따라서 selectedIndex[0]을 인자로 사용해 줬다.

3️⃣ 데이터를 전달받은 ViewController의 코드

import UIKit

class DiaryViewController: UIViewController {
    
    @IBOutlet weak var navItem: UINavigationItem!
    
    var diaryTitle: String!
    
    // 더미데이터 불러오기
    let diaries = Diary.data

    override func viewDidLoad() {
        super.viewDidLoad()
        
        navItem.title = diaryTitle
    }

}

navigation title에 잘 적용된 것을 볼 수 있다. 🙂

profile
앱 개발자를 꿈꾸는 ✨

0개의 댓글