【问题标题】:SwiftUI - Errors creating layout with var referencesSwiftUI - 使用 var 引用创建布局时出错
【发布时间】:2020-11-14 00:58:12
【问题描述】:

我正在尝试使用 Xcode 创建一个主/详细应用程序。

我使用模板创建了我的项目,并尝试在我称为 EditingView 的详细视图中创建一个特殊布局。

我阅读了 SwiftUI 教程,看起来很简单,但在实践中我发现了一些障碍。

我决定在这部分代码中放置一个单独的视图:

struct DetailView: View {
var selectedDate: Date?

var body: some View {
    
    Group{
    EditingView
      
    }.navigationBarTitle(Text("Detail"))
}
}

EditingView 类似于

import Foundation
import SwiftUI

final class EditingView: View
{
  var body:  some View {
var mainVertical: VStack
                            {
…
…
…

                        }
}
}

实际上上面的代码 sn-p 是我尝试过的几个变种之一,每个变种都会导致奇怪的错误。

我的目标是创建一个布局,同时拥有对控件的引用,例如

var myButton:Button()

有了这些引用,就会出现类型和返回值的复杂问题。

但如果没有它们,我也会遇到错误,例如每个控件都需要参数类型,例如 堆栈 或按钮

错误具有修复选项,该选项会写入编译器也无法识别的内容,从而导致更多错误和复杂性。

这是一团糟,没有任何作用,EditingView 必须是 final 但如果我输入 final 关键字它是相同的,那么它说它不符合 View 协议。然后开始抱怨初始化器、闭包等等。

我非常想坚持原生,但我在 Xcode 上遗漏了什么吗? 你有经验的程序员你怎么看?是否有解决方案至少有一个最小的工作示例? 我有最新的 Xcode 版本。

【问题讨论】:

    标签: swift layout swiftui native


    【解决方案1】:

    没有其他代码,但任何 SwiftUI 视图必须是结构,所以

    struct EditingView: View         // << here !!
    {
      var body:  some View {
      ...
    

    【讨论】:

    • 这不是真的。 final class 也可以符合 View。见final class MyView: View { var body: some View { EmptyView() } }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 2019-03-12
    相关资源
    最近更新 更多