【发布时间】:2021-11-20 03:00:28
【问题描述】:
玩转 SwiftUI 的列表视图。似乎无法获得一个简单的列表来显示一些文本条目。
这是我的 SwiftUI 视图:
struct DeviceView: View {
var body: some View {
List {
Text("First").foregroundColor(Color.red)
Text("Second")
Text("Third")
Text("Fourth")
Text("Fifth")
Text("Sixth")
Text("Seventh")
Text("Eighth")
Text("Ninth")
Text("Tenth")
}.font(.largeTitle)
}
}
我正在 UIKit 视图控制器中创建视图,如下所示:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let swiftUIController = UIHostingController(rootView: DeviceView())
addChild(swiftUIController)
swiftUIController.view.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(swiftUIController.view)
swiftUIController.view.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
swiftUIController.view.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
swiftUIController.didMove(toParent: self)
}
}
如果我将 List 注释掉,则显示 Text 项。
为什么列表不显示文本视图?
【问题讨论】:
-
这不是您在 SwiftUI 中制作列表的方式。将
ForEach与字符串数组一起使用,或者至少在那里使用VStack。 -
为什么使用
ViewController包装器——为什么不只使用UIHostingController(rootView: DeviceView())? -
对不起...不要跟随。 UIHostingController(rootView: DeviceView()) 正是我上面所说的。你能解释一下吗?
-
@Phantom59 在某些时候,您在某处有这行代码:
ViewController()。我试图弄清楚为什么你不只是用UIHostingController(rootView: DeviceView())替换它。ViewController包装器有什么用? -
我想我可以......一直回到我的场景委托。我创建了一个小示例项目来研究这个,它是一个更大的应用程序的一部分。这是 Xcode 创建默认项目的方式。无论如何,我认为这与我最初的问题没有任何关系。