我觉得这个代码存在多个问题,但我的第一个问题是我的代理返回nil而我不知道为什么。首先,是我的代表:
import UIKit
//delegate to move information to next screen
protocol userEnteredDataDelegate {
func userDidEnterInformation(info:NSArray)
}
接下来,我为委托定义了一个var,我相信?使它成为可选变量?这是在类
中定义的var dataPassDelegate:userEnteredDataDelegate? = nil
现在,在我的用户在视图中的字段中输入信息之后,我想将这些字段值添加到数组中,然后将该数组传递到将添加到的下一个视图。我已经从一些YouTube示例拼凑了这些代码,但我想我错过了一个必要的部分。我何时为dataPassDelegate var指定某种值,以便在if语句出现时不是nil?我甚至需要if语句吗?
if blankData != 1 {
//add code to pass data to next veiw controller
enteredDataArray = [enterDate.text, enterSeason.text, enterSport.text, enterDispTo.text]
//println(enteredDataArray)
self.appIsWorking ()
if (dataPassDelegate != nil) {
let information: NSArray = enteredDataArray
println(information)
dataPassDelegate!.userDidEnterInformation(information)
self.navigationController?.popViewControllerAnimated(true)
} else {
println ("dataPassDelegate = nil")
}
//performSegueWithIdentifier("goToDispenseScreenTwo", sender: self)
activityIndicator.stopAnimating()
UIApplication.sharedApplication().endIgnoringInteractionEvents()
}
blankData = 0
}
感谢您的帮助。
答案 0 :(得分:1)
委托是指向符合特定协议的另一个对象的指针。通常,您使用委托来优化类的行为,或者将异步网络请求的结果发回状态信息
当您设置dataPassDelegate
代表由您决定时。
具有dataPassDelegate
属性的对象是什么?什么对象将作为代表?
您需要创建2个对象(将作为委托的对象和具有dataPassDelegate
属性的对象)并将它们链接起来。
我们无法告诉您何时这样做,因为我们不知道您尝试做什么或将使用这些对象。