Tab栏控制器中子选项卡之间的数据传输

时间:2016-11-17 15:33:32

标签: ios swift ipad uiviewcontroller uitabbarcontroller

我的标签栏控制器有4个标签,我在VC1中有6个文本字段,想要使用输入的数据在VC2,VC3和VC中显示标签。 VC4。我已经读过有关向TabBarController子类添加数据并在VC的其余部分中使用它但仍然坚持实现的内容。我是一个绝对的初学者,任何代码或代码实现的链接都会很棒。

2 个答案:

答案 0 :(得分:3)

试试这个:

我创建了一个UITabBarController,其中包含2个子控件Tab1ViewControllerTab2ViewController

故事板的屏幕截图:

enter image description here

<强>代码:

class Tab1ViewController: UIViewController
{
    @IBOutlet weak var testTextField: UITextField!
    override func viewDidLoad()
    {
        super.viewDidLoad()
    }
}

class Tab2ViewController: UIViewController
{
    @IBOutlet weak var testLabel: UILabel!
    override func viewDidLoad()
    {
        super.viewDidLoad()
    }

    override func viewWillAppear(_ animated: Bool)
    {
        super.viewWillAppear(animated)
        let tab1Controller = self.tabBarController?.viewControllers?.first as! Tab1ViewController
        self.testLabel.text = tab1Controller.testTextField.text
    }
}

同样,您可以创建4个制表符和其他文本字段。

有关详情,请参阅:How do I pass data from a tab bar controller to one of its tabs?

答案 1 :(得分:0)

您可以使用NotificationCenter通知应用程序中有关更改的任何内容。例如,您可以让视图控制器侦听text的{​​{1}}属性发生更改时发生的更改,然后您可以在该视图控制器中执行操作。

例如,如果第一个视图控制器中有六个文本字段,则可以使最后一个视图控制器侦听第一个视图控制器中文本字段中UITextField属性更改时发布的通知。然后,您的上一个视图控制器可以在检测到更改时执行您需要执行的操作。

Here是一个很好地解释这个问题的教程。