我想在具有行标题且文本长度不同的网格中显示数据。第一列的宽度应足以容纳最长的文本。其余列应均匀分布。
可以用下面的例子来说明这个问题:
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,我只能指定固定宽度或最小和最大宽度,但不能指定“最佳”宽度之类的值。
有什么想法如何做到这一点?
当我在视图中对数组使用 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) 我有一个包含日期列的表.
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列中的值是唯一的情况下才有效.
有任何想法吗?
有没有办法在 SwiftUI 中创建一个NSComboBox
?当我使用时Picker
,NSPopUpButton
会在MacOS下创建一个。
我试过这个:
var body: some View {
Picker("Test:", selection: $selected) {
ForEach(1..<10) { i in
Text(String(i))
}
}
.padding()
}
Run Code Online (Sandbox Code Playgroud)
但这会让我得到这个:
但我需要一个组合框,可以在其中输入文本并从列表中进行选择。
在不集成NSComboBox
as 的情况下,这对于 SwiftUI 来说是否可能NSViewRepresentable
?
我已经检查过以下问题:SwiftUI Custom Picker / ComboBox 但它是关于自定义选择器而不是关于 NSComboBox。