iOS从不同的viewcontrollers swift传递信息

时间:2016-08-20 09:41:11

标签: ios swift view viewcontroller

我目前有一个应用程序,您在一个视图中输入一个东西,它出现在另一个视图中。我应该通过将信息发送到数据库然后在另一个视图上检索它还是直接传递这些信息来做到这一点吗?

3 个答案:

答案 0 :(得分:0)

如果您使用的是故事板,请查看Segues

答案 1 :(得分:0)

从一个ViewController向另一个ViewController发送信息的最佳方式是s​​egues。

你可以这样使用:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if(segue.identifier == "yourIdentifierInStoryboard") {

        let yourNextViewController = (segue.destinationViewController as yourNextViewControllerClass)
        yourNextViewController.value = yourValue

在yourNextViewController类中。

class yourNextViewControllerClass {

    var value:Int! // or whatever

您也可以通过编程方式调用它:

 self.performSegueWithIdentifier("yourIdentifierInStoryboard", sender: self)

将DestinationViewController中的值设置回Primary(First)ViewController

1。实施协议,例如创建一个名为protocol.swift的文件。

    protocol changeUserValueDelegate {
       func changeUser(toValue:Bool)
    }

2。在第二个视图

上设置委托
    class yourNextViewControllerClass {

    var delegate:changeUserValueDelegate?

3. 在加载时设置委托(prepareForSegue)

    if(segue.identifier == "yourIdentifierInStoryboard") {

        var yourNextViewController = (segue.destinationViewController as yourNextViewControllerClass)
        yourNextViewController.delegate = self

4. 将功能添加到FirstViewController

    func changeUser(toValue:Bool) {
        self.currentUserValue = toValue
    }

5. 从SecondViewController调用此函数

     delegate?.changeUser(true)

6. 在FirstViewController中设置委托

    class FirstViewController: UIViewController, ChangeUserValueDelegate {

答案 2 :(得分:0)

如果您以编程方式执行此操作,那么您可以在故事板中为目标视图控制器指定一个标识符,当您移动到Viewcontroller时,使用此标识符获取此viewcontroller并将属性添加到第二个视图控制器以获取您拥有的文本写的

示例:

            let storyBoard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
            let secondViewController = storyBoard.instantiateViewControllerWithIdentifier("secondViewControllerIdentifier") as! UserBasicInfoViewController
            secondViewController.Text = self.textField.text
            self.navigationController?.pushViewController(userProfile, animated: true)

或者

       self.presentViewController(secondViewController, animated: true, completion: nil)