Archive/패캠(올인원)

ch09 현상금 랭킹앱 코드리뷰

lgvv 2021. 6. 21. 01:30

패스트 캠퍼스 랭킹앱을 시작하기 전에 TableView에는 워낙 자신감이 있었는데, 이번에 조금 더 개념을 구체화하고 사용하지 않던 부분도 알게되어서 작성해보고자 한다.

 

(목차)

1. performSegue의 sender 파라미터

2. prepare에서 sender 활용해 다른 뷰의 프로퍼티로 넘기는 법

3. TableView에서 선택시에 나타나는 색 조정

 

 

1. 1. performSegue의 sender 파라미터

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    performSegue(withIdentifier: "showDetail", sender: indexPath.row)
    // sender는 세그 수행에 있어 오브젝트를 같이 껴서 보낼 수 있는 파라미터
}

performSegue에서 sender의 역할을 정확하게 몰라서 사용하는데 제약이 있었는데, 이번 기회로 정확하게 이해가 되었다.

indexPath.session과 같은 정보도 전달할 수 있는데, 해본건 아니지만 row와 session을 함께 전달하려면 배열에 담아서 그 배열을 전달하는 방법으로 사용할 수도 있을 것 같다.

 

 

2. prepare에서 sender 활용해 다른 뷰의 프로퍼티로 넘기는 법

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // DetailViewContoller한테 전달한 데이터 정보
        if segue.identifier == "showDetail" {
            let vc = segue.destination as? DetailViewController
            
            if let index = sender as? Int { // indexPath.row의 값이 sender통해 전달 돼
                vc?.name = nameList[index]
                vc?.bounty = bountyList[index]
            }
        }
        
    }

다음과 같은 방법으로 넘길 수 있다.

우선 전제 조건이 segue를 연결해서 세그의 아이디를 지정해주고, 목적지를 찾아서 sender에서 정보를 받아와 index에 넣어 전달!!

protocol 방식으로 데이터를 넘기기도 하였는데, 이것도 나쁘지 않은 방법!!

 

 

3. TableView에서 선택시에 나타나는 색 조정

셀에서 우측이 Selection 부분을 None으로 설정해주면 된다.

이렇게 하면 완료 회색이 뜨는걸 방지할 수 있다.

 

https://github.com/lgvv/fastCampus/tree/main/BountyList

 

lgvv/fastCampus

Contribute to lgvv/fastCampus development by creating an account on GitHub.

github.com