小编ali*_*_ix的帖子

SwiftUI:当我执行函数时如何从观察到的对象中捕获变化的值

我在 SwiftUI 中观察到的对象有问题。我可以在 View 结构上看到观察对象的变化值。但是在类或函数中,即使我更改了 TextField(可观察对象)的文本值,但“self.codeTwo.text 仍然没有改变。

这是我的代码示例(这是我的 ObservableObject)

class settingCodeTwo: ObservableObject {

private static let userDefaultTextKey = "textKey2"
@Published var text: String = UserDefaults.standard.string(forKey: settingCodeTwo.userDefaultTextKey) ?? ""

private var canc: AnyCancellable!

     init() {
        canc = $text.debounce(for: 0.2, scheduler: DispatchQueue.main).sink { newText in
        UserDefaults.standard.set(newText, forKey: settingCodeTwo.userDefaultTextKey)

    }
}


   deinit {
     canc.cancel()
   }

}
Run Code Online (Sandbox Code Playgroud)

主要问题是......“self.codeTwo.text”从未改变!

class NetworkManager: ObservableObject {


@ObservedObject var codeTwo = settingCodeTwo()
@Published var posts = [Post]()


func fetchData() {
    var urlComponents = URLComponents()
    urlComponents.scheme = "http"



    urlComponents.host = …
Run Code Online (Sandbox Code Playgroud)

ios swiftui combine observedobject observableobject

6
推荐指数
2
解决办法
7509
查看次数

如何调整 TextField 占位符颜色:SwiftUI

我发现我可以像这样快速自定义 TextField 样式。

struct BottomLineTextFieldStyle: TextFieldStyle {
    func _body(configuration: TextField<Self._Label>) -> some View {
        VStack() {
            configuration

            Rectangle()
                .frame(height: 1, alignment: .bottom)
                .foregroundColor(Color.white)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这允许我使用“下划线形状样式”文本字段。

用法

TextField("placeholder", text: $value).textFieldStyle(BottomLineTextFieldStyle()).foregroundColor(.white)
Run Code Online (Sandbox Code Playgroud)

不过我也想改变占位符颜色,但我不能。

所以,我的问题是如何自定义文本字段的占位符颜色?请帮助我并感谢您的阅读。

textfield ios swift swiftui

5
推荐指数
1
解决办法
8326
查看次数