簡體   English   中英

從另一個類迅速調用文本字段

[英]Calling textfield from another class swift

叫課:

class LoginViewController: UIViewController { 
    let chipField: UITextField = {
        ........

        return textField1
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(chipField)

    }
}

要調用的表:

class MainTableViewController: UITableViewController {
    ....
}

LoginViewController MainTableViewController調用chipfield

在這種情況下,您實際上應該使用委托,例如

在此處閱讀有關代表的更多信息

protocol MainTableViewControllerDelegate {
   func getChipFieldValue()
}


class MainTableViewController: UITableViewController {
    var delegate: MainTableViewControllerDelegate?

    // to get chipFieldValue self.delegate?.getChipFieldValue)
}

在LoginViewController中定義委托中的函數

class LoginViewController: UIViewController,MainTableViewControllerDelegate { 

func getChipFieldValue() ->String {
   return chipField.text
}

// later in the code when you present MainTableViewController view pass delegate to self  to MainTableViewController object
// something like the MainTableViewControllerObject.delegate = self


}

根據您的情況,您需要的只是MainTableViewController中的一個屬性

class MainTableViewController: UITableViewController {
    var chipFieldCopy:UITextField?
    ...
}

但是我建議您重新考慮是否需要整個UITextField,在大多數情況下,您只需要它的文本即可,

class MainTableViewController: UITableViewController {
    var chipInfoString:String?
    ...
}

足夠。

在您的handleLogin()方法中,可以將其傳遞到MainTableViewController中,如下所示:

//let navController = UINavigationController(rootViewController: MainTableViewController()) //Replace this line

let mainTableVC = MainTableViewController()
mainTableVC.chipFieldCopy = chipField
let navController = UINavigationController(rootViewController: mainTableVC)

或像我建議的

mainTableVC.chipInfoString = chipField.text

你可以在MainTableViewController中訪問它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM