iOS从不同的视图控制器快速传递信息

Posted

技术标签:

【中文标题】iOS从不同的视图控制器快速传递信息【英文标题】:iOS passing information from different viewcontrollers swift 【发布时间】:2016-08-20 09:41:10 【问题描述】:

我目前有一个应用程序,您可以在一个视图中键入一个内容,然后它会出现在另一个视图中。我应该只是通过将信息发送到数据库然后在另一个视图上检索它来执行此操作,还是有办法直接传递此信息?

【问题讨论】:

@EricAya 感谢您的提示!我会确保不会发生这种情况。 【参考方案1】:

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

【讨论】:

我目前正在以编程方式进行所有操作。还有其他方法吗?【参考方案2】:

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

你可以这样使用它:

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

    if(segue.identifier == "yourIdentifierInStoryboard") 

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

在你的 NextViewController 类中。

class yourNextViewControllerClass 

    var value:Int! // or whatever

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

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

将 DestinationViewController 中的值设置回主(第一个)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添加Function

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

5.从您的 SecondViewController 调用此函数

     delegate?.changeUser(true)

6. 在您的 FirstViewController 中设置委托

    class FirstViewController: UIViewController, ChangeUserValueDelegate 

【讨论】:

感谢您的详细回答。是否有指向您可以在此处发布的教程的链接? 这是我对另一个问题的回答。但是有很多教程:raywenderlich.com/113394/storyboards-tutorial-in-ios-9-part-2【参考方案3】:

如果您以编程方式执行此操作,那么您可以在情节提要中为您的目标视图控制器提供一个标识符,当您移动到 ​​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)

【讨论】:

以上是关于iOS从不同的视图控制器快速传递信息的主要内容,如果未能解决你的问题,请参考以下文章

如何快速将数据从视图控制器传递到容器视图

将值从子视图页面快速传递到 Pageview 控制器

快速将图像从一个视图控制器传递到另一个视图控制器

使用 almaofire 快速获取字典的所有值并传递给视图控制器

将图像从集合视图控制器快速传递到另一个视图控制器

xcode/ios:以编程方式推送视图控制器并传递行信息