视图控制器内的简单数据传输,无需转换

时间:2017-03-10 12:08:34

标签: swift xcode delegates protocols

所以我是应用程序开发的新手,我正在尝试建立一个非常简单的委托/协议模式。我一直在寻找和尝试不同的教程,但似乎找不到任何有效的东西,并且陷入了混乱。请有人帮忙。我会打破我,以便我非常清楚我需要什么 -

我有两个视图控制器,' 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中调用数据。

1 个答案:

答案 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)
}