ios - xcode-将登录屏幕输入链接到网站输入

标签 ios swift

我正在通过XCode构建IOS应用程序,该应用程序具有一个带有用户名和密码输入的登录屏幕。我还有一个带有登录屏幕的网站,可以将您带到我的数据库。我不想通过IOS App与数据库对话。当我点击IOS App上的登录按钮时,我希望用户名和密码字段中的信息可以在网站上填写。我实质上是在IOS应用程序上制作一个外观更好的GUI,该IOS应用程序仅从网站读取其所有信息,就像该网站在数据库中查找信息一样。我不确定如何做到这一点,但是如果您能指出正确的方向,将会很有帮助。

编辑:这是我的IOS快速代码的修改版本。只是想知道您将在哪里添加将IOS应用程序输入链接到网站的代码。

import UIKit

class LoginController: UIViewController {
    //defining labels for username and password
    let usernameLabel: UILabel = {
        let ULabel = UILabel()
        ULabel.text = NSLocalizedString("Username", comment: "")
        ULabel.textColor = .gray
        ULabel.textAlignment = .center
        ULabel.font = ULabel.font.withSize(25)
        return ULabel
    }()
    let passwordLabel: UILabel = {
        let PLabel = UILabel()
        PLabel.text = NSLocalizedString("Password", comment: "")
        PLabel.textColor = .gray
        PLabel.textAlignment = .center
        PLabel.font = PLabel.font.withSize(25)
        return PLabel
    }()

    //defining text fields for username and password
    let usernameTextField: UITextField = {
        let UTextFieldDesign = UITextField()
        UTextFieldDesign.setBottomBorder(backGroundColor: BackColor, borderColor: LoginButtonColor)
        UTextFieldDesign.textColor = .white
        UTextFieldDesign.layer.cornerRadius = 3.0
        //UTextFieldDesign.placeholder = "  Username"
        UTextFieldDesign.textColor = .white
        //UTextFieldDesign.backgroundColor = .lightGray
        return UTextFieldDesign
    }()
    let passwordTextField: UITextField = {
        let PTextFieldDesign = UITextField()

        PTextFieldDesign.setBottomBorder(backGroundColor: BackColor, borderColor: LoginButtonColor)
        PTextFieldDesign.textColor = .white
        PTextFieldDesign.isSecureTextEntry = true
        PTextFieldDesign.layer.cornerRadius = 3.0
        //PTextFieldDesign.backgroundColor = .lightGray
        return PTextFieldDesign
    }()

    //designing login button for login screen
    let loginButton: UIButton = {
        let LButton = UIButton(type: .system)
        LButton.layer.cornerRadius = 25.0
        LButton.setTitleColor(.white, for: .normal)
        LButton.setTitle(NSLocalizedString("Sign In", comment: ""), for: .normal)
        LButton.titleLabel?.font = .systemFont(ofSize: 20)
        LButton.backgroundColor = LoginButtonColor
        LButton.addTarget(self, action: #selector(loginAction), for: .touchUpInside)
        return LButton
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.hideKeyboardWhenTap()
        navigationController?.isNavigationBarHidden = true
        navigationController?.isToolbarHidden = true
        view.backgroundColor = UIColor(red: 203/255, green: 215/255, blue: 242/255, alpha: 1.0)
        setupTextFieldComponents()
        setupLoginButton()
    }
    override func viewWillAppear(_ animated: Bool) {
        navigationController?.isNavigationBarHidden = true
        navigationController?.isToolbarHidden = true
        super.viewWillAppear(animated)
    }


    @objc func loginAction() {
        let selectioncontroller = SelectionController()
        navigationController?.pushViewController(selectioncontroller, animated: true)
    }

    fileprivate func setupTextFieldComponents() {
        setupUsernameText()
        setupUsernameField()
        setupPasswordText()
        setupPasswordField()
    }
    fileprivate func setupUsernameText() {

        view.addSubview(usernameLabel)
        usernameLabel.translatesAutoresizingMaskIntoConstraints = false
        usernameLabel.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 20).isActive = true
        usernameLabel.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 20).isActive = true
        usernameLabel.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -20).isActive = true


    }
    fileprivate func setupPasswordText() {
        view.addSubview(passwordLabel)
        passwordLabel.translatesAutoresizingMaskIntoConstraints = false
        passwordLabel.topAnchor.constraint(equalTo: usernameTextField.bottomAnchor, constant: 15).isActive = true
        passwordLabel.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 20).isActive = true
        passwordLabel.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -20).isActive = true


    }
    fileprivate func setupLoginButton() {
        view.addSubview(loginButton)
        loginButton.anchors(top: passwordTextField.bottomAnchor, topPad: 15, bottom: nil, bottomPad: 0,
                            left: passwordTextField.leftAnchor, leftPad: 0, right: passwordTextField.rightAnchor,
                            rightPad: 0, height: 50, width: 0)
        loginButton.translatesAutoresizingMaskIntoConstraints = false
    }


    fileprivate func setupUsernameField() {
        view.addSubview(usernameTextField)
        usernameTextField.anchors(top: usernameLabel.bottomAnchor, topPad: 12, bottom: nil, bottomPad: 0,
                                  left: view.leftAnchor, leftPad: 24, right: view.rightAnchor,
                                  rightPad: 24, height: 30, width: 0)
        usernameTextField.translatesAutoresizingMaskIntoConstraints = false
    }
    fileprivate func setupPasswordField() {
        view.addSubview(passwordTextField)
        passwordTextField.anchors(top: passwordLabel.bottomAnchor, topPad: 12, bottom: nil, bottomPad: 0,
                                  left: view.leftAnchor, leftPad: 24, right: view.rightAnchor,
                                  rightPad: 24, height: 30, width: 0)
        passwordTextField.translatesAutoresizingMaskIntoConstraints = false
    }

}

最佳答案

您可以在ViewController上创建隐藏的WKWebview,而WK的URL是您的Web用户登录URL,然后通过View Controller输入将值发布到Webinterface。

NSString *scriptSource = [NSString stringWithFormat:@" document.queryString('#username').value='@%';document.queryString('#password').value='@%';document.querySelector('form').submit;",[inputUsername text],[inputPassword     
WKUserScript *userScript = [[WKUserScript alloc] initWithSource:scriptSource
                                                      injectionTime:WKUserScriptInjectionTimeAtDocumentEnd
                                                   forMainFrameOnly:YES];
[wkWebView.configuration.userContentController addUserScript:userScript];
[wkWebView reload];

关于ios - xcode-将登录屏幕输入链接到网站输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60686064/

相关文章:

ios - 在 Objective C 中切换 View

swift - 带有 enumerateChildNodes 的 child 的 child (withName :using:)

swift - 使用 didSelect 方法在 viewDidLoad 后在 Cell 中显示图像

ios - 为什么即使没有 NSCoding 协议(protocol)也会对类进行序列化

ios - 如何在 SwiftUI 中将自定义字体系列设置为整个应用程序的默认值

ios - 编辑 UIButton 使其一侧有圆角

ios - 为什么 uitableviewcell 滚动时会改变?

Swift-如何设置 TableView 分隔符边到边插入并具有布局边距

ios - 未检测到 iBeacon 时应用程序崩溃 - Swift iOS

iphone - 什么时候轮换更改 UICollectionView 的 Layout 参数合适