У меня очень большая цель - c проект, и я пытаюсь медленно внедрить SwiftUI. Мне удалось успешно реализовать некоторые экраны в классах swiftUI, которые вызываются из классов Objective- c.
Одна странная ошибка, с которой я столкнулся сейчас, заключается в том, что Список не виден при запуске приложения. Это видно в предварительном просмотре, хотя. А также, когда я заменяю List на VStack, он выглядит нормально при запуске приложения. Если я создаю отдельное приложение SwiftUI и запускаю этот код, то он тоже работает нормально. Проблема только в том, когда я вызываю этот класс из объективного класса c.
Прикрепленные изображения
Xcode Preview Screenshot
Снимок экрана устройства
Код
import SwiftUI
struct InfoShareView: View {
var body: some View {
List{
Text("First Line")
Text("Second Line")
}
.padding()
.background(Color.white)
}
}
struct InfoShareView_Previews: PreviewProvider {
static var previews: some View {
InfoShareView()
}
}
А вот и звонок в InfoShareView
import UIKit
import SwiftUI
class AboutViewControllerSwift: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let swiftController = UIHostingController(rootView: InfoShareView())
addChild(swiftController)
swiftController.view.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(swiftController.view)
swiftController.view.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
swiftController.view.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
}
}
И вот это вызов из объектива - c класс
AboutViewControllerSwift *aboutViewController = [[AboutViewControllerSwift alloc] initWithNibName:nil bundle:nil];
self.nvgController=[[UINavigationController alloc]initWithRootViewController:aboutViewController];
self.window.rootViewController=self.nvgController;
[self.window makeKeyAndVisible];