相关疑难解决方法(0)

无需按钮即可在SwiftUI中呈现新视图

所以我想使用SwiftUI呈现一个新视图,而用户不必点击按钮,因为NavigationButton可以使用它。这是一个例子

struct ContentView : View {

    var model: Model

    var body: some View {
        NavigationView {
            Text("Hello World")
        }.onAppear {
            if model.shouldPresent {
                // present a new view
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

onAppearI中,我想包含一些将新视图推送到导航堆栈的代码。

ios swift swiftui

15
推荐指数
1
解决办法
5625
查看次数

如何在 SwiftUI 列表中以正确的高度渲染多行文本?

我想要一个显示多行文本的 SwiftUI 视图,具有以下要求:

  • 适用于 macOS 和 iOS。
  • 显示大量字符串(每个字符串由一个单独的模型对象支持)。
  • 我可以对多行​​文本进行任意样式设置。
  • 每个文本字符串可以是任意长度,可能跨越多个行和段落。
  • 每个文本字符串的最大宽度固定为容器的宽度。高度根据文本的实际长度而变化。
  • 没有滚动每个单独的文本,只有列表。
  • 文本中的链接必须是可点击/可点击的。
  • 文本是只读的,不必是可编辑的。

感觉最合适的解决方案是拥有一个列表视图,包装原生 UITextView/NSTextView。

这是我到目前为止所拥有的。它实现了大多数要求,除了具有正确的行高度。

//
//  ListWithNativeTexts.swift
//  SUIToy
//
//  Created by Jaanus Kase on 03.05.2020.
//  Copyright © 2020 Jaanus Kase. All rights reserved.
//

import SwiftUI

let number = 20

struct ListWithNativeTexts: View {
    var body: some View {
        List(texts(count: number), id: \.self) { text in
            NativeTextView(string: text)
        }
    }
}

struct ListWithNativeTexts_Previews: PreviewProvider {
    static var previews: some View {
        ListWithNativeTexts()
    }
} …
Run Code Online (Sandbox Code Playgroud)

swiftui swiftui-list uiviewrepresentable nsviewrepresentable

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