addSubView SwiftUI Просмотр UIKit UIView в Swift - PullRequest
0 голосов
/ 17 июня 2019

Я пытался добавить SubView SwiftUI View в UIView.self.view.addSubview(contentView)

Ошибка: невозможно преобразовать значение типа 'ContentView' в ожидаемый тип аргумента 'UIView'

Пожалуйста, помогите мне реализовать этот интерфейс.

import UIKit
import SwiftUI

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        view.backgroundColor = UIColor.lightGray

        let contentView = ContentView()
        view.addSubview(contentView) // Error: Cannot convert value of type 'ContentView' to expected argument type 'UIView'
    }


}


struct ContentView: View {
    var body: some  View {
        Text("Hello world")
    }

}

1 Ответ

0 голосов
/ 27 июня 2019

Шаг 1: Создайте экземпляры UIHostingController с помощью SwiftUI View

struct ContentView : View {
    var body: some View {
        VStack {
            Text("Test")
            Text("Test2")

        }
    }
}

var child = UIHostingController(rootView: ContentView())

Шаг 2: Добавить экземпляр UIHostingController в качестве дочернего контроллера представления в Any UIKit ViewController

var parent = UIViewController()
child.view.translatesAutoresizingMaskIntoConstraints = false
child.view.frame = parent.view.bounds
// First, add the view of the child to the view of the parent
parent.view.addSubview(child.view)
// Then, add the child to the parent
parent.addChild(child)

Вы можете использовать следующий код для удаления дочернего контроллера Удалить из представления Контроллер

// Then, remove the child from its parent
child.removeFromParent()

// Finally, remove the child’s view from the parent’s
child.view.removeFromSuperview()
...