【问题标题】:How to pass data using delegates and protocals如何使用委托和协议传递数据
【发布时间】:2020-08-11 12:10:53
【问题描述】:

我有第一个 viewController 里面有 UILabel 和 secondViewController 有 UItextField 和添加按钮。它们嵌入在标签栏中。当单击添加按钮到第一个视图控制器的 uilabel 时,我想从文本字段传递数据。

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
  }  
}

第二个 ViewController 是

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)
     }
}

【问题讨论】:

  • ` let vc = SecondViewController()` 创建SecondViewController 的新实例,可能不是你看到的那个。
  • 您可以找到许多不同方法的示例。使用哪种方法取决于您认为您的应用程序在开发过程中需要什么。去谷歌(或你最喜欢的搜索引擎)并搜索uitabbarcontroller pass data between tabs swift
  • 你是如何从第一个 vc 导航到第二个 vc 的?您如何导航第二个vc?它是使用故事板创建的吗?同样在 vc 中,您在第一个 Viewcontroller 中创建的 viewDidLoad 完成后将超出范围

标签: ios swift delegates protocols


【解决方案1】:

SecondViewController 是否嵌入在 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
    }
}

【讨论】:

    【解决方案2】:

    您可以使用用户默认值。因此,您可以将添加按钮保存到用户默认值中,然后在另一个视图上的 viewDidLoad 上加载它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2015-03-01
      相关资源
      最近更新 更多