所以我是应用程序开发的新手,我正在尝试建立一个非常简单的委托/协议模式。我一直在寻找和尝试不同的教程,但似乎找不到任何有效的东西,并且陷入了混乱。请有人帮忙。我会打破我,以便我非常清楚我需要什么 -
我有两个视图控制器,' DetailedVC '和' SelectionsVC '。
DetailedVC有一个名为的变量
var sendingData = (choice: "", choiceValue:0.0)
和
UIbutton buttonSelectTapped
SelectionsVC有一个名为的变量
var recievedData = (choice: "", choiceValue:0.0)
我想做的就是从变量发送数据' sendingData '在DetailsVC中,当按钮(buttonSelectTapped)被点击到SelectionsVC并将其存储在变量' recievedData '中时。我不希望VC从一个转换到另一个或任何要发回的东西,只是将数据发送到另一个VC。 然后,当用户查看该控制器' SelectionsVC'在任何阶段,加载该控制器时都会在viewDidLoad中调用数据。
答案 0 :(得分:0)
如果您不希望VC从转换从一个转发到另一个或者要发回的任何内容,请使用NSUserDefault在viewcontroller之间传递数据,仅将数据发送到另一个VC。
DetailedVC代码
func viewDidLoad() {
NSUserDefaults.standardUserDefaults().removeObjectForKey("selectedData")
}
func didTapButtonSelectTapped() {
NSUserDefaults.standardUserDefaults().setDouble(sendingData , forKey: "selectedData")
}
选择VC代码
func viewDidLoad() {
if(NSUserDefaults.standardUserDefaults().doubleForKey("selectedData")) {
recievedData = NSUserDefaults.standardUserDefaults().doubleForKey("selectedData")
}
}
但正如您的问题标题所描述的那样,他们在上面的代码中没有使用协议/代理。
从viewcontroller过渡传递数据:
DetailedVC代码
func didTapButtonSelectTapped() {
let vc = SelectionsVC()
vc.recievedData = sendingData
self.presentViewController(vc, animated: true, completion: nil)
}