快速在视图之间传递和调用变量和函数

Posted

技术标签:

【中文标题】快速在视图之间传递和调用变量和函数【英文标题】:Passing and calling variables and functions between views in swift 【发布时间】:2014-08-26 16:25:57 【问题描述】:

我一直想深入研究 ios 和 Mac 编程,当我听说 swift 时,我认为这将是一个很好的时机。

目前我一直在访问其他视图中定义的变量。 我正在使用一个带有一些静态变量的公共结构,我可以从任何地方访问这些变量,但是(除了我的直觉告诉我我做错了)我到了这根本不是一个可行的解决方案的地步。 我有一个带有嵌入式 ListView 的 ViewController。当列表中的单元格被删除时,我必须以某种方式编辑 TopViews 标签。

如何从嵌入视图调用 textLabel.text 或重新加载函数?

为了创建列表,我遵循this tutorial 并在此基础上进行构建。

【问题讨论】:

毫无疑问... 抱歉,显然在屏幕前太久了 你的问题太模糊了。我必须在这里对您的布局\视图设计做一些假设。在了解不多的情况下,可以使用委托、NSNotification、通过 segue、单例或它们的组合传递数据。 @MichaelWildermuth 我现在才学习如何处理 Xcode,而您的评论实际上帮助很大。我正在寻找传递数据的方法,你的选项列表给了我足够的研究。 【参考方案1】:

您可以使用 NSNotification。在 ViewController 的 viewDidLoad 函数中,您可以像这样添加观察者:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "doSomethingWhenCellDeleted:", name:"cellDeleted", object: nil)

那么当你调用的嵌入视图中的单元格被删除时:

NSNotificationCenter.defaultCenter().postNotificationName("cellDeleted", object: nil)

那时将在 ViewController 中调用 doSomethingWhenCellDeleted 方法,看起来应该是这样的:

func doSomethingWhenCellDeleted(notification: NSNotification)
//Do whatever

【讨论】:

谢谢,这正是我所需要的!只是为了澄清一下,我可以使用 NS NotificationCenter 从其他视图推送/获取数据,即使它们没有相互嵌入?我也可以通过它发送一个 var 值吗? 是的,你可以。您还可以发送变量。我将在下面演示这一点,但要清楚一点,您不需要过于频繁地使用 NSNotificationCenter。正如@MichaelWildermuth 所建议的那样,segues、singletons 和 delegates 同样有用,并且每个范例都有特定的应用程序。但是,如果你想在 NSNotification 中传递信息,你可以这样做: var someDictionary = Dictionary() dataDict["deletedInfo"] = "hello" NSNotificationCenter.defaultCenter().postNotificationName("cellDeleted" , object:self, userInfo:dataDict) 确实如此。如果您刚开始学习教程,则不太可能需要 NSNotification

以上是关于快速在视图之间传递和调用变量和函数的主要内容,如果未能解决你的问题,请参考以下文章

调用函数和被调用函数之间的参数传递是通过啥来传的

在C语言中,定义一个函数的形参和实参之间具体是如何进行参数传递的?

如何将纬度和经度传递给另一个函数 - 快速定位

从函数调用传递参数或从变量传递参数之间的 C++ 区别

Swift 3 - 在视图控制器之间传递变量和函数

调用函数时为啥形参的值不能传给实参