ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SwiftUI UIKit 72 - SwiftU에서 UIKit 뷰로 데이터 전송
    SwiftUI 100 레시피/UIKit and SwiftUI Interoperability 2022. 6. 28. 16:34

    #1. SwiftUI UIKit 71 - UIKit앱에 SwiftUI 적용하기 에서 수정 및 추가

     

    #2. MovieDetailsController.swift

    import Foundation

    import UIKit

    import SwiftUI

     

    struct MovieDetails: UIViewControllerRepresentable{

        

        let name: String

        

        typealias UIViewControllerType = MovieDetailsController

        

        func makeUIViewController(context: Context) -> MovieDetailsController {

            return MovieDetailsController()

        }

        

        func updateUIViewController(_ uiViewController: MovieDetailsController, context: Context) {

            uiViewController.setMovieName(name)

        }

        

    }

     

    class MovieDetailsController: UIViewController{

        

        private lazy var titleLabel: UILabel = {

            

            let label = UILabel()

                label.textAlignment = .center

                //label.text = "LABEL"

                label.font = UIFont(name: "Arial", size: 32)

                label.translatesAutoresizingMaskIntoConstraints = false

                self.view.addSubview(label)

            

                label.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true

                label.centerYAnchor.constraint(equalTo: self.view.centerYAnchor).isActive = true

                

                label.widthAnchor.constraint(equalTo: self.view.widthAnchor).isActive = true

                label.heightAnchor.constraint(equalToConstant: 44).isActive = true

            

            return label

        }()

        

        func setMovieName(_ name: String){

            titleLabel.text = name

        }

        

        override func viewDidLoad() {

            super.viewDidLoad()

        }

    }

     

    #3. MovieListScreen 수정

    import SwiftUI

     

    struct MovieListScreen: View {

        var body: some View {

            

            NavigationView {

                

                List(1...20, id: \.self){ index in

                    

                    

                    NavigationLink(destination: MovieDetails(name: "Moview \(index)").navigationTitle("Movie \(index)"),

                         label: {

                        

                        HStack {

                            Text("Movie \(index)")

                            Spacer()

                            RatingView(rating: .constant(Int.random(in: 1...5)))

                        }

     

                    })

     

                }

                .navigationBarTitle("SwiftUI View")

            }

        }

    }

     

    struct MovieListScreen_Previews: PreviewProvider {

        static var previews: some View {

            MovieListScreen()

        }

    }

     

     

    리스트 뷰 클릭시 세부사항으로 이동

     

    댓글

Designed by Tistory.