【发布时间】:2016-02-05 10:08:20
【问题描述】:
我通过参加一些有关 Swift 编程语言的在线课程开始学习编程。我正在试验一个 Xcode 项目,其中我的主情节提要中有两个视图控制器。
在项目中,我有一个按钮将我从视图控制器 1 带到视图控制器 2。视图控制器 2 有三个按钮:
- 通过邮件应用程序触发一封新电子邮件
- 关闭屏幕并将用户返回到第一个视图控制器屏幕
- 第三个应该调用一个函数(该代码位于第一个视图控制器的 ViewController.swift 中)。
有问题的函数其实很简单:
func ResetGame()
{
PlaySoundButton()
score = 0
totalquestionsasked = 0
}
我已经记不清我试图让它工作的所有方式,但最初我认为它只是一个简单的按钮,在第二个视图中具有以下代码 sn-ps 之一:
@IBAction func buttonResetGame(sender: UIButton) {
ResetGame()
}
或者
@IBAction func buttonResetGame(sender: AnyObject) {
ResetGame()
}
但这当然会导致 Use of unresolved identifier 'ResetGame' 错误。
我还尝试按照以下示例直接在按钮代码中对函数进行编码:
@IBAction func buttonResetGame(sender: UIButton) {
PlaySoundButton()
score = 0
totalquestionsasked = 0
}
当然,那也没用。
我对此进行了研究,看来这在 Objective C 和其他编程语言中是可能的,但我似乎无法找到使用 Swift 的示例。这是否意味着这是不可能的,或者只是它没有完成?
总结:
- 这可能吗?
- 如果是,怎么做?
- 如果不推荐,为什么不呢?
- 最后,推荐的跨视图控制器使用函数的方法是什么?
【问题讨论】:
-
你能发布一些代码吗?特别是有问题的功能。然后我们可以就最佳解决方案提出建议。
-
@RMenke 不用担心,只是编辑了问题以包含代码。可以看到,函数很简单。
-
谷歌单例和委托。这个问题之前已经被问过很多次了,在swift中有很好的答案。
-
@RMenke 好的,太好了!谢谢!
-
@Lubos 在我的一门在线课程中,我刚刚发现了 UIViews。如果我在主视图控制器中使用 UIView 来执行我当前在第二个视图控制器中所做的事情,这是否意味着位于 UIView 中的按钮、标签等的所有编码都将属于同一个视图控制器?如果是这样,我是否能够从 UIView 中的按钮调用该函数,而不是尝试从第二个视图控制器执行它? (我的第二个视图控制器旨在提供更多信息/帮助、电子邮件反馈和重置分数的能力)。这是一个实用的解决方案吗?