패스트캠퍼스) ios 개발 챌린지

[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 29회차 미션

student513 2020. 11. 30. 12:19

오늘은 그동안 만들던 원피스 현상금 앱의 마무리를 지었다.

그 중에서도 디테일 뷰를 구현하였는데, 테이블에서 셀을 선택하면 새로 생성되는 뷰를 디테일뷰라고 칭하기로 하였다

이 때 필요한 기능의 이름이 세그웨이다.

 

스토리보드에서 뷰를 하나 끌고온 다음에 이렇게 control을 누른상태로 드래그하여 와이어를 이어주면 된다.

 

//UITableViewDelegate
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
        print("-->\(indexPath.row)")
        performSegue(withIdentifier: "showDetail", sender: nil)
    }

그리고 기존의 테이블뷰 코드에 performSegue함수를 추가해준다.

이때 세그웨이의 이름은 showDetail로 정해주었다.

그러나 세그웨이를 이어줬어도 모달창만 업로드될 뿐 우리가 원하는 이미지와 이름, 현상금이 포함된 내용은 뜨지 않는다.

디테일뷰가 렌더되기 전에 테이블뷰에서 데이터를 넘겨줄 준비를 하고 있어야한다.

let bountyList = [33000000, 50, 4400000, 30000000, 16000000, 8000000, 7700000, 12000000]
    ~~~
    //세그웨이 실행준비 함수
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        //DetailVieweController에 데이터를 넘겨주겠다
        if segue.identifier == "showDetail" {
            let vc = segue.destination as? DetailViewController
            
            if let index = sender as? Int{
                vc?.name = nameList[index]
                vc?.bounty = bountyList[index]
            }
        }
    }
    ~~~
    override func viewDidLoad() {
        super.viewDidLoad()

세그웨이 실행 준비함수인 prepare를 작성해주도록 한다.

디테일뷰에서 필요로하는 name과 bounty를 넘겨준다

 

class DetailViewController: UIViewController {
    
    @IBOutlet weak var imgView: UIImageView!
    @IBOutlet weak var nameLable: UILabel!
    @IBOutlet weak var bountyLable: UILabel!

    var name: String?
    var bounty: Int?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        updateUI()
    }
    
    func updateUI() {
        if let name = self.name, let bounty = self.bounty {
            let img = UIImage(named: "\(name).jpg")
            imgView.image = img
            nameLable.text = name
            bountyLable.text = "\(bounty)"
        }
    }
    

    @IBAction func close(_ sender: Any) {
        dismiss(animated: true, completion: nil)
    }
}

그리고 디테일뷰는 다음과 같이 작성해주면 완료

 

올인원 패키지 : iOS 앱 개발👉https://bit.ly/2FjWizq