我可以做一个静态列表
List {
View1()
View2()
}
Run Code Online (Sandbox Code Playgroud)
但是,如何从数组中动态生成元素列表?我尝试了以下操作,但出现错误:包含控制流语句的闭包不能与函数生成器“ ViewBuilder”一起使用
let elements: [Any] = [View1.self, View2.self]
List {
ForEach(0..<elements.count) { index in
if let _ = elements[index] as? View1 {
View1()
} else {
View2()
}
}
}
Run Code Online (Sandbox Code Playgroud)
有什么解决办法吗?我要完成的工作是一个列表,其中包含不是静态输入的动态元素集。
我想使用颜色文字使用资产目录中的颜色资产。在UIKit
,我们可以直接使用颜色文字有没有什么方法可以在 SwiftUI 中使用颜色文字
我已经从带有UIColor
参数的Color 初始值设定项中进行了搜索,但没有找到
我在使用带有 SwiftUI 的滚动视图时尝试使用彩色背景,但这会导致导航标题不再折叠。我已经尝试了多种方法,但这始终是一个问题。
struct Person : Identifiable{
var id : Int
var name : String
}
struct ContentView: View {
let people = [
Person(id: 1, name: "Ricky"),
Person(id: 2, name: "Dani"),
Person(id: 3, name: "Mark"),
Person(id: 4, name: "Kailin"),
Person(id: 5, name: "James"),
Person(id: 5, name: "Jenna")
]
var body: some View {
NavigationView{
ZStack{
Color.red
.edgesIgnoringSafeArea(.all)
ScrollView{
ForEach(people, id: \.id) { person in
Text(person.name)
.frame(width: 300, height: 400)
.background(Color.blue)
.padding()
}
}.navigationBarTitle("Home")
}
}
}
// init(){
// …
Run Code Online (Sandbox Code Playgroud) 我刚刚下载了 iOS 17 运行时,但将其复制到目标位置后,会打开此弹出窗口,并且 Xcode 无法按预期使用模拟器:
从 Apple 开发者网站下载
我怎样才能解决这个问题?
在 SwiftUI 中为 TextField 打开键盘时,我没有找到任何将“返回”键更改为“完成”的链接或指南。
现在可以不自定义 UITextField 吗?
我希望能够使用NavigationButton
导航到中的新视图.navigationBarItems
。这是我期望它应该起作用的方式:
NavigationView {
Text("Hello world")
.navigationBarTitle(Text("Title"))
.navigationBarItems(trailing:
NavigationButton(destination: TestView()) {
Text("Next")
}
)
}
Run Code Online (Sandbox Code Playgroud)
但是,“下一步”按钮没有任何作用!我知道PresentationButton提供了如下这样的弹出视图:
NavigationView {
Text("Hello world")
.navigationBarTitle(Text("Title"))
.navigationBarItems(trailing:
PresentationButton(destination: TestView()) {
Text("Next")
}
)
}
Run Code Online (Sandbox Code Playgroud)
但这不是我想要的。
某些 UI 设置无法在暗/亮模式下自动工作,因为UIColor
. 例如shadow
在图层中。因为我需要在明暗模式下删除和放置阴影,所以我需要在某个地方放置updateShadowIfNeeded()
函数。我知道如何检测当前的模式:
func dropShadowIfNeeded() {
switch traitCollection.userInterfaceStyle {
case .dark: removeShadow()
case .light: dropShadowIfNotDroppedYet()
default: assertionFailure("Unknown userInterfaceStyle")
}
}
Run Code Online (Sandbox Code Playgroud)
现在我把这个函数放在 里面layoutSubviews
,因为每次外观改变时它都会被调用:
override func layoutSubviews() {
super.layoutSubviews()
dropShadowIfNeeded()
}
Run Code Online (Sandbox Code Playgroud)
但是这个函数被调用了很多。只有在userInterfaceStyle
更改时才触发的正确功能是什么?
我无法再在iOS 13上使用该rightView
属性MDCTextField
。我是唯一对此有疑问的人吗?
正确的视图宽度覆盖整个文本字段:防止用户交互并隐藏textView内容。
从切换MDCTextField
到时没问题UITextField
。
我正在尝试将来自 EnvironmentObject 的值分配给名为userSettings
的类实例categoryData
,尝试将值分配给此处的类时出现错误ObserverCategory(userID: self.userSettings.id)
错误说:
Cannot use instance member 'userSettings' within property initializer; property initializers run before 'self' is available
这是我的代码:
这是我的环境对象类:
//user settings
final class UserSettings: ObservableObject {
@Published var name : String = String()
@Published var id : String = "12345"
}
Run Code Online (Sandbox Code Playgroud)
接下来是我试图分配其值的代码:
//user settings
@EnvironmentObject var userSettings: UserSettings
//instance of observer object
@ObservedObject var categoryData = ObserverCategory(userID: userSettings.id)
class ObserverCategory : ObservableObject {
let userID : String
init(userID: String) {
let db …
Run Code Online (Sandbox Code Playgroud) 我有一个List
包含TextEditor
struct ContentView: View {
@State var text: String = "test"
var body: some View {
List((1...10), id: \.self) { _ in
TextEditor(text: $text)
}
}
}
Run Code Online (Sandbox Code Playgroud)
但它的项目并没有随着TextEditor
. 我试过.fixedSize()
修饰符但没有运气。我在这里缺少什么?