当前位置: 首页 > 面试题库 >

在Swift中传递数据

山乐生
2023-03-14
问题内容

我一直在寻找答案,但只能找到答案。

我有viewController1一个按钮可以选择viewController2。没有代码,我通过“接口”构建器进行设置。上,viewController2我有一个按钮,可以自行关闭

 self.dismissViewControllerAnimated(true, completion, nil)

我想从视图传递viewController2viewController1时传递一个字符串。我该怎么做呢?另外,我正在使用swift。

提前致谢!


问题答案:

有两种常见的模式,这两种模式都消除了viewController2明确了解viewController1的需要(这对于可维护性非常重要):

  1. 为您的viewController2创建委托协议,并将viewController1设置为委托。每当您想将数据发送回viewController1时,都要使viewController2将数据“委托”

  2. 将闭包设置为允许传递数据的属性。当显示viewController2时,viewController1将在viewController2上实现该关闭。每当viewController2有数据要传回时,它将调用闭包。我觉得这种方法更“迅捷”。

这是#2的一些示例代码:

class ViewController2 : UIViewController {
    var onDataAvailable : ((data: String) -> ())?

    func sendData(data: String) {
        // Whenever you want to send data back to viewController1, check
        // if the closure is implemented and then call it if it is
        self.onDataAvailable?(data: data)
    }
}

class ViewController1 : UIViewController {
   func doSomethingWithData(data: String) {
        // Do something with data
    }
    override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
        // When preparing for the segue, have viewController1 provide a closure for
        // onDataAvailable
        if let viewController = segue.destinationViewController as? ViewController2 {
            viewController.onDataAvailable = {[weak self]
                (data) in
                if let weakSelf = self {
                    weakSelf.doSomethingWithData(data)
                }
            }
        }
    }
}


 类似资料:
  • 问题内容: 如何在Swift中传递C回调?考虑以下示例: 问题答案: 使用Swift 2.0,现在可以在纯Swift中设置回调了!请检查http://oleb.net/blog/2015/06/c-callbacks-in- swift/ 和Swift2无法调用类型类型为参数的’FSEventStreamCreate’

  • 问题内容: 我有一个想要完全适应我想要的应用程序 我一直在关注Seemu Apps的Youtube教程,但是我需要添加一个可选的ViewController来完成它 该应用程序有2个显示车辆的tableViews,如果我们单击第一个tableView的一行,则第二个tableView将向我们显示选定车辆的列表。 这是到目前为止我们所拥有的:(图像链接,因为我在stackOverFlow上没有十分的

  • 问题内容: 我正在以编程方式将UITapGestureRecognizer添加到我的视图之一: 我遇到的第一个问题是“’#selector’的参数未引用’@Objc’方法,属性或初始化程序。 很酷,所以我在handleTap签名中添加了@objc: 现在,我收到错误消息“无法将方法标记为@objc,因为无法在Objective-C中表示参数的类型。 它只是建筑物地图的图像,其中一些图钉图像指示了兴

  • 问题内容: 我正在快速的ios应用程序中实现。 目前,在几个面板上,我正在侦听服务器并等待传入​​消息。我这样做是通过在每个面板中调用该函数: 但是我注意到这是一个错误的方法,我需要更改它-现在我只想开始监听一次传入的消息,并且当出现任何消​​息时-将此消息传递给任何侦听它的面板。 所以我想通过NSNotificationCenter传递传入的消息。到目前为止,我能够传递发生了某些事情的信息,但无

  • 本文向大家介绍Swift传递和返回函数,包括了Swift传递和返回函数的使用技巧和注意事项,需要的朋友参考一下 示例 以下函数返回另一个函数作为其结果,可以稍后将其分配给变量并调用:            

  • 问题内容: 我正在尝试将应用程序从Objective-C转换为Swift,但是我找不到如何使用Swift在视图之间传递数据。我的Objective-C代码是 这样做是从根本上获取变量TheNum,并将其传递给另一个视图控制器上的变量num。我知道这可能是一个简单的问题,但是我对Swift感到非常困惑,因此,如果有人可以解释他们如何将其更改为Swift,将不胜感激! 谢谢 问题答案: 假设我们站在