从另一个类迅速调用文本字段

时间:2018-10-24 08:38:33

标签: ios swift firebase class

被称为课程:

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

        return textField1
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(chipField)

    }
}

要调用的表:

class MainTableViewController: UITableViewController {
    ....
}

MainTableViewControllerchipfield中呼叫LoginViewController

2 个答案:

答案 0 :(得分:3)

在这种情况下,您确实应该使用委托,例如

详细了解代表Here

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


}

答案 1 :(得分:0)

根据您的情况,您只需要MainTableViewController中的一个属性

smart update
smart install docker-ce

但是我建议您重新考虑是否需要整个UITextField,在大多数情况下,您只需要它的文本即可,

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

足够了。

在您的handleLogin()方法中,您可以像下面这样将其传递到MainTableViewController中:

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

或者像我建议的

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

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

,您可以在MainTableViewController中访问它