Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何添加';skyfloatLabelText';在我看来?_Swift_Swiftui - Fatal编程技术网

Swift 如何添加';skyfloatLabelText';在我看来?

Swift 如何添加';skyfloatLabelText';在我看来?,swift,swiftui,Swift,Swiftui,我想在swift UI中使用skyfloatingLabelText。他们的例子如下所示 let textField = SkyFloatingLabelTextField(frame: CGRect(x: 10, y: 10, width: 200, height: 45)) textField.placeholder = "Name" textField.title = "Your full name" self.view.addSubview(textField) 我不知道如何在我的sw

我想在swift UI中使用skyfloatingLabelText。他们的例子如下所示

let textField = SkyFloatingLabelTextField(frame: CGRect(x: 10, y: 10, width: 200, height: 45))
textField.placeholder = "Name"
textField.title = "Your full name"
self.view.addSubview(textField)
我不知道如何在我的swift UI中实现上述代码。下面是我的swift用户界面

import SwiftUI
import SkyFloatingLabelTextField


struct Login: View {

    var body: some View {

        VStack() {

            HeaderBar()
            Spacer()
            HStack {

                VStack {

                    Text("Login Page")
                        .fontWeight(.bold)

                    TextField("Name", text: Value) //default input is ok

                    Button(action: /*@START_MENU_TOKEN@*/{}/*@END_MENU_TOKEN@*/) {
                        Text("Login")

                    }

                }


            }
            Spacer()

        }


    }
}

struct Login_Previews: PreviewProvider {
    static var previews: some View {
        Login()
    }
}


提前感谢。

如@Asperi所述,您需要为此使用
UIViewRepresentable

委托示例取自

导入快捷界面
导入SkyFloatingLabelTextField
结构SkyFloatingContentView:UIViewRepresentable{
类协调器:NSObject,UITextFieldDelegate{
var父级:SkyFloatingContentView
init(uu父项:SkyFloatingContentView){
self.parent=parent
}
func textField didchangeSelection(textField:UITextField){
如果let text=textField.text{
如果让floatingLabelTextField=textField作为?SkyFloatingLabelTextField{
如果(text.count<3 | |!text.contains(“@”)){
floatingLabelTextField.errorMessage=“无效电子邮件”
}否则{
//只有当我们将错误消息重置为nil或空字符串时,错误消息才会消失
floatingLabelTextField.errorMessage=“”
}
}
}
}
}
func makeCoordinator()->Coordinator{
协调员(自我)
}
func makeUIView(上下文:context)->SkyFloatingLabelTextField{
返回SkyFloatingLabelTextField(帧:CGRect(x:10,y:10,宽度:200,高度:45))
}
func updateUIView(textField:SkyFloatingLabelTextField,context:context){
textField.placeholder=“名称”
textField.title=“您的全名”
textField.delegate=context.coordinator
}
}
结构ContentView:View{
var body:一些观点{
VStack(){
垫片()
HStack{
VStack{
文本(“登录页面”)
.fontWeight(.粗体)
SkyFloatingContentView()
按钮(操作:/*@START\u MENU\u TOKEN@*/{}/*@END\u MENU\u TOKEN@*/){
文本(“登录”)
}
}
}
垫片()
}
}
}
结构内容视图\u预览:PreviewProvider{
静态var预览:一些视图{
ContentView()
}
}

是否尝试将其包装在UIViewRepresentable中?
import SwiftUI
import SkyFloatingLabelTextField

struct SkyFloatingContentView: UIViewRepresentable {
    class Coordinator: NSObject, UITextFieldDelegate {
        var parent: SkyFloatingContentView

        init(_ parent: SkyFloatingContentView) {
            self.parent = parent
        }

        func textFieldDidChangeSelection(_ textField: UITextField) {
            if let text = textField.text {
                if let floatingLabelTextField = textField as? SkyFloatingLabelTextField {
                    if (text.count < 3 || !text.contains("@")) {
                        floatingLabelTextField.errorMessage = "Invalid email"
                    } else {
                        // The error message will only disappear when we reset it to nil or empty string
                        floatingLabelTextField.errorMessage = ""
                    }
                }
            }
        }
    }

    func makeCoordinator() -> Coordinator {
        Coordinator(self)
    }

    func makeUIView(context: Context) -> SkyFloatingLabelTextField {
        return SkyFloatingLabelTextField(frame: CGRect(x: 10, y: 10, width: 200, height: 45))
    }

    func updateUIView(_ textField: SkyFloatingLabelTextField, context: Context) {
        textField.placeholder = "Name"
        textField.title = "Your full name"
        textField.delegate = context.coordinator
    }
}

struct ContentView: View {
    var body: some View {
        VStack() {
            Spacer()

            HStack {
                VStack {
                    Text("Login Page")
                        .fontWeight(.bold)

                    SkyFloatingContentView()

                    Button(action: /*@START_MENU_TOKEN@*/{}/*@END_MENU_TOKEN@*/) {
                        Text("Login")
                    }
                }
            }

            Spacer()
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}