Ios 如何使用委托和协议传递数据
我有第一个带有UILabel的viewController和第二个带有UItextField和Add按钮的viewController。它们嵌入在tabbar中。我想在单击“添加”按钮到第一个视图控制器的uilabel时从文本字段传递数据Ios 如何使用委托和协议传递数据,ios,swift,delegates,protocols,Ios,Swift,Delegates,Protocols,我有第一个带有UILabel的viewController和第二个带有UItextField和Add按钮的viewController。它们嵌入在tabbar中。我想在单击“添加”按钮到第一个视图控制器的uilabel时从文本字段传递数据 protocol SendDelagate { func setData(string:String) } 第一视图控制器是 class ViewController: UIViewController,SendDelagate{ @IBOutlet
protocol SendDelagate
{
func setData(string:String)
}
第一视图控制器是
class ViewController: UIViewController,SendDelagate{
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
let vc = SecondViewController()
vc.delegates = self
}
func setData(string: String) {
label.text = string
}
}
class SecondViewController: UIViewController {
var delegates:SendDelagate?
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func addButton(_ sender: UIButton) {
let text = textField.text!
delegates?.setData(string: text)
}
}
第二个视图控制器是
class ViewController: UIViewController,SendDelagate{
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
let vc = SecondViewController()
vc.delegates = self
}
func setData(string: String) {
label.text = string
}
}
class SecondViewController: UIViewController {
var delegates:SendDelagate?
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func addButton(_ sender: UIButton) {
let text = textField.text!
delegates?.setData(string: text)
}
}
您可以使用用户默认值。因此,您可以使用“添加”按钮将其保存到用户默认设置中,然后在另一个视图的
viewDidLoad
上加载它。第二个视图控制器嵌入到UITabbarController中
您可以通过TabbarController找到SecondViewController实例
class ViewController: UIViewController, SendDelagate {
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
if let secondViewController = tabBarController?.viewControllers?.first(where: { $0 is SecondViewController }) as? SecondViewController {
secondViewController.delegates = self
}
}
func setData(string: String) {
label.text = string
}
}
`让vc=SecondViewController()`这将创建一个新的
SecondViewController
实例,可能不是您看到的实例。您可以找到许多不同方法的示例。使用哪种方法取决于您认为随着开发的进行,您的应用程序将需要什么。转到google(或您最喜欢的搜索引擎)并搜索uitabbarcontroller在选项卡之间传递数据swift
您如何从第一个vc导航到第二个vc?你是如何在第二个vc中导航的?它是使用故事板创建的吗?。此外,在第一个视图中创建的vc
中,一旦viewDidLoad
完成,控制器将超出范围