Swift初学者:链接视图控制器和应用程序代理



我是第一次使用Xcode的初学者。我正在尝试将IBAction(视图中的控制器)与我在App delegate中创建的函数链接起来。问题似乎出在.text和String之间的差异上。如果可以的话,请参考代码,试着想一种方法,我可以将我创建的按钮(与IBAction)和我创建的"whatFoodText"函数链接起来。请帮忙!

func whatFoodText(whatFood: String, whereFrom: String) -> String {
if whatFood.text = "Apple" {

链接到

@IBAction func tellMoi(sender: AnyObject) {
toldMoi.text(whatFoodText)

你的问题没有多大意义。

一般来说,你不应该用"业务逻辑"来扰乱你的应用程序代理。保持轻量级,只处理启动和关闭应用程序以及响应应用程序委派消息的方法。

您应该将响应按钮按下的方法放在这些按钮所属的视图控制器中。

当你说"问题似乎出在.text和String之间的区别上"时,你的意思还不清楚。UITextFields、UITextViews和UILabels等UI对象的文本属性(.text,用swift语法表示)包含字段中的当前值。在swift中,这些属性可以被视为包含String对象。(它们实际上包含Cocoa NSString对象,可以自由地转换为Swift String对象,因此您可以在很大程度上忽略差异,只使用类型转换从一个转换到另一个)

如果您有一个whatFoodText方法,它需要2个字符串输入,并返回一个字符串作为结果,那么您需要向它传递2个字符串。

你发布的行:

toldMoi.text(whatFoodText)

没有多大意义。您将传递whatFoodText作为参数。如果您的目标是获得对whatFoodText的调用结果,并将其存储为名为toldMoi的字段的文本内容,那么您需要以不同的方式编写代码。

您的IBAction方法可能如下所示:

@IBAction func tellMoi(sender: UIButton) 
{
let string1: String = String(someField.text)
let string2: String = String(someOtherField.text)
toldMoi.text = whatFootText(whatFood: string1, whereFrom: string2)
}

最新更新