我正在尝试在我的应用程序中创建特定生日/日期的视图,并且我使用了文本字段,以便用户可以更改现有的想法。但是文本字段一次只能更改一个字符?然后它会阻止用户输入(然后他们可以再次单击文本字段并更改另一个字符)。理想情况下,他们应该能够继续打字,直到他们点击停止。
这应该是所有相关的代码,因为我认为其他任何事情都不会影响它:
@State private var exampleIdeas = ["Sweets", "Chocolate", "Cake"]
ForEach($exampleIdeas, id:\.self, editActions: .delete) { $idea in
TextField("Idea", text: $idea)
}
Run Code Online (Sandbox Code Playgroud)
我尝试过寻找以前的解决方案,但似乎没有其他人遇到这个问题?(我自己不知道任何可能的原因/解决方案)
我需要一个按钮来打开一个本机上下文菜单弹出窗口,其中有两列和一个轮式选择器。与 Apple 在 DatePicker 中的做法类似。
我尝试将 Picker 放入菜单或 .contextMenu 中,但它不起作用
Menu {
Picker(selection: $selection, label: Text(label)) {
...
}
.pickerStyle(WheelPickerStyle())
}
Text("Open menu")
.contextMenu {
Picker(selection: $selectedValue2, label: Text("")) {
VStack {
Picker("", selection: $selectedValue.0) {
...
}
.pickerStyle(WheelPickerStyle())
}
VStack {
Picker("", selection: $selectedValue.1) {
...
}
.pickerStyle(WheelPickerStyle())
}
}
}
Run Code Online (Sandbox Code Playgroud) 注意: - 这个问题最初是在 Xcode 15 处于测试阶段时发布的。在 Xcode 15 的最终版本中,编译器给出了更清晰的错误说明:
默认值需要完全限定的域名值
原问题:
我已将这个问题缩小到一个简单的模型类,其中一个属性具有枚举类型。如果我尝试为该属性指定默认值,则代码将无法再编译:
enum SomeEnum: Hashable, Codable {
case one
case two
}
@Model
class SomeClass {
var value: SomeEnum = .two
init() {
}
}
Run Code Online (Sandbox Code Playgroud)
这会导致错误:
输入“有吗?” 没有成员“二”
如果您深入研究实际日志,您可以看到更多信息:
@__swiftmacro_8Sample39SomeClass5ModelfMm_.swift:15:34:错误:输入“有吗?” 没有成员“二”
(“值”,\SomeClass.value,.two,nil)
~^~
/.../Sample.swift:117:1: 注意:在宏“模型”的扩展中
类 SomeClass {
^~~~~~~~~~~~~~~~~
/.../Sample.swift:117:1: 注意:在宏“模型”的扩展中
类 SomeClass {
^~~~~~~~~~~~~~~~~
如果右键单击@Model并选择“展开宏”,您会看到:
@__swiftmacro_8Sample39SomeClass5ModelfMm_.swift:15:34: error: type 'Any?' has no member 'two'
("value", \SomeClass.value, .two, nil)
~^~~
/.../Sample.swift:117:1: note: in expansion of macro 'Model' here
class … 我们有一个 Swiftdata 模型,例如:
@Model
class MyThing {
var name:String
var myObject: MyCustomObject
//...
}
Run Code Online (Sandbox Code Playgroud)
为了让“myObject”(也是一个 @Model)在删除 MyThing 实例时自动删除,我们需要向 myObject 添加属性(?)、关系(.cascade)。
本教程中显示了这一点:
...还有这个苹果视频:
但是当我尝试这样做时,就会发生这种情况(似乎没有选项可以做到这一点)...如果我手动输入它,它会说找不到:
我的故事板中有一个空的 UIImageView,并且在我的 ViewController.swift 文件中有插座。在 viewDidLoad 中,我调用以下代码:
let config = UIImage.SymbolConfiguration(pointSize: 50, weight: .light)
self.symbol.image = UIImage(systemName: "calendar")
self.symbol.preferredSymbolConfiguration = config
Run Code Online (Sandbox Code Playgroud)
符号加载良好,甚至重量也能正确反映。
然而,符号图像的大小仍然与故事板中 UIImageView 的大小相关,即使我没有在 UIImageView 上设置任何约束。据我所知,SymbolConfiguration 中声明的 pointSize 对符号图像的大小没有影响。
据我所知,似乎有两种方法可以让 SF Symbols 中的 pointSize 发挥作用:1. 以编程方式执行所有操作,或 2. 在 Storyboard/Inspector 中执行所有操作。
有谁知道我做错了什么或者SF Symbols不支持故事板+代码配置?
Apple 将评论提示(评价此应用程序)限制为每年 3 次,并且可以在用户设置中将其关闭。
\n\n我想问与此相关的三件事:
\n\n我已经开始使用 SwiftUI 并尝试将使用 Jetpack Compose 创建的应用程序转换为 iOS,但我遇到了菜单(或选择器,如果更容易的话)的问题。
我想要做的是能够创建具有多行且两行字体大小不同的项目。但我无法让它工作,只有第一行可见
我尝试过类似的事情:
Picker("Select menu item", selection: $selectedItem) {
ForEach(0..<items.count) {
VStack {
Text("Menu item 1").fontWeight(.bold) // Only this text is shown
Text("Description")
}
}
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过
Menu("Options") {
VStack {
Text("Menu item 1").fontWeight(.bold) // Only this text is shown
Text("Description")
}
}
Run Code Online (Sandbox Code Playgroud)
我花了很多时间试图找到这样的例子。这可以在 SwiftUI 中做到吗?如果没有,您应该建议使用什么控件?
Apple 的 Swift Charts 最近在 WWDC 上推出。然而,我的练习图有冗余。不需要图例。如何创建具有所有颜色但没有图例的图表?
\n\n使用 \xe2\x80\x9c.foregroundStyle(by: .value("Shape", shape.type))\xe2\x80\x9d 会导致图表自动向条形图添加多种颜色。但foregroundStyle也带有传奇色彩。删除 foregroundStyle 会同时删除图例和颜色:
\n\n这是最小的可重现代码:
\nimport Charts\nimport SwiftUI\n\nstruct ContentView: View {\n var body: some View {\n VStack {\n Text("Swift Chart Example")\n BarChart()\n .frame(width: 350, height: 350, alignment: .center)\n }\n }\n}\n\nstruct Shape: Identifiable {\n var type: String\n var count: Double\n var id = UUID()\n}\n\nlet data: [Shape] = [\n .init(type: "Square", count: 12),\n .init(type: "Heart", count: 10),\n .init(type: "Rectangle", count: 21),\n .init(type: "Star", count: 15),\n .init(type: "Circle", …Run Code Online (Sandbox Code Playgroud) 我是 SwiftUI 新手。我想制作一个具有图像选择器的应用程序。
\n我找到这篇文章: https: //ishtiz.com/swiftui/image-picker-in-swiftui
\n它说:
\n\n\n要在 SwiftUI 中实现图像选择器,您可以使用
\nImagePickerSwiftUI 框架提供的结构体。该结构有一个pickImage()方法,可以向用户呈现图像选择器,并将所选图像作为 UIImage 对象返回。
提供此示例代码:
\nstruct ContentView: View {\n @State private var image: UIImage?\n var body: some View {\n VStack {\n if image != nil {\n Image(uiImage: image!)\n .resizable()\n .scaledToFit()\n }\n Button("Select Image") {\n self.image = ImagePicker.pickImage()\n }\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n我将代码添加到我的项目中,但它没有\xe2\x80\x99t 构建:
\n\n\n在范围内找不到“ImagePicker”
\n
我需要进口一些东西吗?
\n我正在尝试将 Swift 中的一个类转换为actor. 我的类的当前init方法调用另一个实例方法来完成一系列初始化工作。转换后,这是我的演员的简化版本:
actor MyClass {
private let name: String
init(name: String) {
self.name = name
self.initialize() // Error on this line
}
private func initialize() {
// Do some work
}
func login() {
self.initialize()
// Do some work
}
// Bunch of other methods
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译时出现以下错误:
无法从非隔离上下文引用 Actor 隔离的实例方法“initialize()”;这是 Swift 6 中的一个错误
我发现我可以替换self.initialize()为:
Task { await self.initialize() }
Run Code Online (Sandbox Code Playgroud)
这是最好的方法吗?这是否会导致任何竞争条件,外部调用者可以在该initialize()方法有机会运行之前在我的参与者上执行该方法?看起来很麻烦,因为您不在参与者的 init 方法中的孤立上下文中。我找不到任何解释这一点的 Swift 文档。