小编D. *_*ika的帖子

SwiftUI LazyVGrid 如何调整列的大小以使用显示其所有文本所需的最大宽度

我想在具有行标题且文本长度不同的网格中显示数据。第一列的宽度应足以容纳最长的文本。其余列应均匀分布。

可以用下面的例子来说明这个问题:

struct ContentView: View
{
    private var firstColumn: GridItem { GridItem(alignment: .trailing) }
    private var remainingColumns: [GridItem] { [GridItem(alignment: .center), GridItem(alignment: .center)] }
    private var columns: [GridItem] { [firstColumn] + remainingColumns }
    
    var body: some View {
        LazyVGrid(columns: columns, alignment: .leading) {
            ForEach(1..<5) {row in
                // Row Header
                Text("Row \(row)")
                
                // remaining columns
                ForEach(1..<3) {col in
                    Text("\(row),\(col)")
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,对于 GridItems,我只能指定固定宽度或最小和最大宽度,但不能指定“最佳”宽度之类的值。

有什么想法如何做到这一点?

ios swiftui

5
推荐指数
0
解决办法
485
查看次数

在一个 SwiftUI 视图中相同的 ForEach 循环两次

当我在视图中对数组使用 ForEach 循环两次时,我在运行时收到以下警告:
LazyVGridLayout: the ID 84308994-9D16-48D2-975E-DC40C5F9EFFF is used by multiple child views, this will give undefined results!

到目前为止,原因很清楚,但是解决这个问题的最明智的方法是什么?

下面的示例代码说明了这个问题:

import SwiftUI

// MARK: - Model

class Data: ObservableObject
{
    @Published var items: [Item] = [Item(), Item(), Item()]
}

struct Item: Identifiable
{
    let id = UUID()
    var name: String = ""
    var description: String = ""
}

// MARK: - View

struct MainView: View {
    @StateObject var data: Data

    private var gridItems: [GridItem] { Array(repeating: GridItem(), count: data.items.count) } …
Run Code Online (Sandbox Code Playgroud)

swiftui swiftui-foreach

4
推荐指数
1
解决办法
4490
查看次数

SQL:获取每行的下一个日期值

我有一个包含日期列的表.

ID  |      Date 
----|-----------
  1 | 2000-01-01
  2 | 2000-02-01
  3 | 2000-02-01
  4 | 2000-03-01
Run Code Online (Sandbox Code Playgroud)

我需要一个select,它返回每行,ID,Date和最小日期(表中所有日期),大于当前日期.

ID  |      Date  |  Next date
----+------------+------------
  1 | 2000-01-01 | 2000-02-01
  2 | 2000-02-01 | 2000-03-01
  3 | 2000-02-01 | 2000-03-01
  4 | 2000-03-01 |     (NULL)
Run Code Online (Sandbox Code Playgroud)

我的第一个方法是

SELECT id, date, LEAD (date, 1) OVER (ORDER BY date NULLS LAST) AS next_date
  FROM t
Run Code Online (Sandbox Code Playgroud)

但这只有在DATE列中的值是唯一的情况下才有效.

有任何想法吗?

sql oracle

3
推荐指数
2
解决办法
2431
查看次数

如何使用 swiftUI 获取 ComboBox

有没有办法在 SwiftUI 中创建一个NSComboBox?当我使用时PickerNSPopUpButton会在MacOS下创建一个。

我试过这个:

var body: some View {
    Picker("Test:", selection: $selected) {
        ForEach(1..<10) { i in
            Text(String(i))
        }
    }
    .padding()
}
Run Code Online (Sandbox Code Playgroud)

但这会让我得到这个:

在此输入图像描述

但我需要一个组合框,可以在其中输入文本并从列表中进行选择。

在不集成NSComboBoxas 的情况下,这对于 SwiftUI 来说是否可能NSViewRepresentable

我已经检查过以下问题:SwiftUI Custom Picker / ComboBox 但它是关于自定义选择器而不是关于 NSComboBox。

macos combobox swiftui

2
推荐指数
1
解决办法
2542
查看次数

标签 统计

swiftui ×3

combobox ×1

ios ×1

macos ×1

oracle ×1

sql ×1

swiftui-foreach ×1