小编Rum*_*les的帖子

运行时错误:前提条件失败:属性未能设置初始值

我有一个BugSplitView单独工作正常但会导致

先决条件失败:属性未能设置初始值

在预览或模拟器中导航到时出错。

该视图具有由水平按钮栏分隔的上部 (Color) 和下部 (Color),并使用 GeometeryReader 和split状态进行布局。当它是 NavigationButton 的目的地时,它不会在预览中正确显示并在模拟器中运行时报告上面的断言。删除它BugButtonBar,它的工作原理。把我难住了!帮助。

import SwiftUI

struct BugSplitView: View {
    @State var split : CGFloat = 0.75
    var buttons : [BugButtonBar.Info]{
        [BugButtonBar.Info(title: "title", imageName: "text.insert"){}]
    }
    var body: some View {
        GeometryReader{ g in
            VStack(spacing: 0){
                Color.gray
                    .frame(width: g.size.width, height: (g.size.height) * self.split)
                VStack{
                    BugButtonBar(infos: self.buttons)
                    Color(white: 0.3)
                }
                    .frame(height: (g.size.height) * (1 - self.split))
            }
        }.edgesIgnoringSafeArea(.all)
    }
}


struct BugButtonBar : View{

    struct Info : Identifiable …
Run Code Online (Sandbox Code Playgroud)

swiftui navigationlink

12
推荐指数
1
解决办法
6628
查看次数

如何在SwiftUI的列表中启用选择

我试图用SwiftUI创建一个简单的多选列表。我无法使其工作。

列表有第二个参数,它是SelectionManager,所以我尝试创建一个具体的实现。但是,它永远不会被调用,行也不会突出显示。

import SwiftUI

var demoData = ["Phil Swanson", "Karen Gibbons", "Grant Kilman", "Wanda Green"]

struct SelectKeeper : SelectionManager{
    var selections = Set<UUID>()

    mutating func select(_ value: UUID) {
        selections.insert(value)
    }

    mutating func deselect(_ value: UUID) {
        selections.remove(value)
    }

    func isSelected(_ value: UUID) -> Bool {
        return selections.contains(value)
    }

    typealias SelectionValue = UUID

}

struct SelectionDemo : View {
    @State var selectKeeper = SelectKeeper()

    var body: some View {
        NavigationView {
            List(demoData.identified(by: \.self)){ name in
                Text(name)
            }
                .navigationBarTitle(Text("Selection Demo"))
        } …
Run Code Online (Sandbox Code Playgroud)

list selection swiftui

11
推荐指数
3
解决办法
3856
查看次数

对 ObservedObject 的更改不会更新 UIViewRepresentable

下面是最简单的例子。在预览中工作正常(UITextView文本更新为“哎哟”)。但是,在一个应用程序中运行它(即添加为rootView通过sceneDelegate),以及UITextView不更新。

import SwiftUI

class ModelObject : ObservableObject{
    @Published var text = "Model Text"
}

struct MyTextView : UIViewRepresentable {
    @ObservedObject var modelObject : ModelObject

    func makeUIView(context: Context) -> UITextView {
        let result = UITextView()
        result.isEditable = true
        return result
    }
    func updateUIView(_ view: UITextView, context: Context) {
        view.text = modelObject.text
    }
}

struct BugDemoView : View{
    @ObservedObject var modelObject : ModelObject
    var body : some View{
        VStack{
            MyTextView(modelObject: modelObject)
            Button(action: {
                self.modelObject.text …
Run Code Online (Sandbox Code Playgroud)

swiftui uiviewrepresentable

7
推荐指数
1
解决办法
1235
查看次数

Text() 忽略 AttributedString(markdown: ...) 中的多个段落

给定 markdown 字符串 "**Line 1**\n\nLine 2" 我期望输出为

1号线

2号线

相反我得到

1号线2号线

当然,这不是 markdown 或 AttributedString 的限制。我错过了什么?!如果没有两个空行,如何指定多个段落?

struct DemoView_Previews: PreviewProvider {
    static var previews: some View {
        Text(try! AttributedString(markdown: "**Line 1**\n\nLine 2"))
    }
}
Run Code Online (Sandbox Code Playgroud)

markdown swiftui attributedstring

3
推荐指数
1
解决办法
885
查看次数