IT アプリ開発

【SwiftUI】ViewController→SwiftUIで使用できるようにする

2021年2月21日

swiftUIではviewというものが表示の構造体を意味していて、
そして通常のswiftではUIViewControllerがその役割をになっている。
しかし、swiftUIではviewがあくまで表示となっているので、viewconrtollerを使用することができません。
なのでViewControllerで作成した表示のコンテンツを、swiftUIでも使用できるようにするためには以下のコードが必要となります。

そして、一回viewControllerをswiftのviewに変換をしてしまえば、あとは通常のように使用すれば表示が可能となります。
しかしswiftUIもまだリリースされたばっかなので、どうしてもViewCOntrollerでできることがswiftUIではまだできないなどの違いがあります。
なのでviewControllerで表示して、そして変換をしてviewで表示吸えるというようなやり方が必要になってきます。

ViewController → SwiftUIのViewへの変換コード

import UIKit
import SwiftUI

/**
 SwiftUIでViewControllerを表示する。
 */
struct aaa:View{
    var body: some View{
        VStack{
            SampleViewControllerWrapper()
        }
    }
}


/**
 SwiftUIでviewControllerを表示する際に必要なコード
 */
struct SampleViewControllerWrapper : UIViewControllerRepresentable {
    
    func makeUIViewController(context: Context) -> SampleViewController {
        return SampleViewController()
    }
    
    func updateUIViewController(_ uiViewController: SampleViewController, context: Context) {
        
    }
}


/**
 従来のViewControllerでviewの作成
 */
class SampleViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let label:UILabel = UILabel(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
        label.text = "testSample"
        self.view.backgroundColor = UIColor.green
        
        self.view.addSubview(label)
    }
}

● GeometryReader

● MVVM(Model-View-ViewModel)

-IT, アプリ開発
-,

© 2024 Yosshi Labo. Powered by AFFINGER5