相关疑难解决方法(0)

如何使枚举符合Swift中的协议?

Swift文档说,结构枚举都可以符合协议,我可以达到一致的程度.但我无法让enum表现得像结构示例:

protocol ExampleProtocol {
    var simpleDescription: String { get set }
    mutating func adjust()
}

class SimpleClass: ExampleProtocol {
    var simpleDescription: String = "A very simple class."
    var anotherProperty: Int = 69105

    func adjust() {
        simpleDescription += " Now 100% adjusted."
    }
}

var a = SimpleClass()
a.adjust()
let aDescription = a.simpleDescription

struct SimpleStructure: ExampleProtocol {
    var simpleDescription: String = "A simple structure"

    mutating func adjust() {
        simpleDescription …
Run Code Online (Sandbox Code Playgroud)

enums swift swift-protocols

90
推荐指数
4
解决办法
4万
查看次数

ScrollView 内的 LazyVStack 中具有可变高度的内容会导致口吃/跳跃

XCode 13.0 测试版 (13A5155e) 和针对 iOS 14 或 15

我的目标是在 SwiftUI 中创建一个聊天视图。这需要创建具有不同高度内容的 ScrollView。

经过大量调试后,我确定如果 ScrollView 中有没有固定高度的视图,当您滚动到视图顶部时它会卡顿。

——————

项目: 下载这个项目并自己尝试

struct Message: Identifiable {
  let id = UUID()
  var text: String
}

struct ContentView: View {
  @State var items: [Message] = MockData.randomMessages(count: 100)
  
  var body: some View {
    VStack {
      Button("Shuffle items") {
        items = MockData.randomMessages(count: 100)
      }
      ScrollView {
        LazyVStack(spacing: 10) {
          ForEach(items) { item in
            Text(item.text)
              .background(colors.randomElement()!)
          }
        }
      }
    }
  }
}

Run Code Online (Sandbox Code Playgroud)

我现在的结论是LazyVStack仅适用于具有固定高度的子视图。仅此问题就阻止了 SwiftUI 的生产就绪。

有没有其他人解决过这个问题? …

uiscrollview ios swift swiftui

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

SwiftUI 使用枚举构建列表

我正在尝试基于枚举字符串创建 SwiftUI 列表。我面临这个错误:

Cannot invoke initializer for type 'List<_, _>' with an argument list of type '([HomeView.Data], @escaping (String) -> HomeMenuRow)'
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我无法理解如何使用 id 或如何遍历枚举来构建一行。

swift swift5 swiftui

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

标签 统计

swift ×3

swiftui ×2

enums ×1

ios ×1

swift-protocols ×1

swift5 ×1

uiscrollview ×1