【问题标题】:Simple data transfer within viewcontroller without transition视图控制器内的简单数据传输,无需转换
【发布时间】:2017-03-10 12:08:33
【问题描述】:

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

我有两个视图控制器,“DetailedVC”和“SelectionsVC”。

DetailedVC 有一个变量叫做 -

var sendingData = (choice: "", choiceValue:0.0)

UIbutton buttonSelectTapped

SelectionsVC 有一个变量叫做 -

var recievedData = (choice: "", choiceValue:0.0)

我想要做的就是当按钮 (buttonSelectTapped) 被点击到 SelectionsVC 并将其存储在变量 'recievedData '。我不希望 VC 从一个转换到另一个或任何要发回的东西,只是将数据发送到另一个 VC。 然后,当用户在任何阶段查看该控制器“SelectionsVC”时,加载该控制器时将在 viewDidLoad 中调用数据。

【问题讨论】:

  • 我不明白... SelectionsVC 是否在某处实例化?
  • @V.Roberts 介绍 SelectionsVC 怎么样?
  • 是的,可以通过应用底部的标签栏查看 SelectionsVC
  • 我的意思是你如何调用 SelectionsVC 屏幕?
  • 像 presentViewController 还是其他??

标签: swift xcode delegates protocols


【解决方案1】:

如果您不希望 VC 从一个到另一个转换或发送回任何东西,请使用 NSUserDefault 在 vi​​ewcontroller 之间传递数据,只将数据发送到另一个 VC。 p>

详细的VC代码

    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")
   }
}

但正如您的问题标题所描述的,它们在上述代码中没有使用协议/委托。

在视图控制器的转换中传递数据:

详细的VC代码

func didTapButtonSelectTapped() {
let vc = SelectionsVC()
vc.recievedData = sendingData
self.presentViewController(vc, animated: true, completion: nil)
}

【讨论】:

  • 谢谢。我确实发布了一个关于什么是最好的方法的问题,我被告知委托/协议或全局变量,但是对全局变量有很多不好的压力,所以我尝试了委托。我会试试你的上述建议
  • @V.Roberts 可能还有其他最好的解决方案,您可以根据需要选择!让我们知道你的回应。
  • @V.Roberts 你得到你的解决方案了吗??
  • 我在两个控制器上都遇到了两个错误。在此行的DetailedVC错误中 NSUserDefaults.standardUserDefaults().setObject(self.sendingData, forKey: "selectedData") 错误 - 无法将值类型(选择:String,choiceValue:Double)转换为预期的参数类型 anyObject,对于 SelectionsVC
  • @V.Roberts 所以使用 setDouble(value: Double, forKey defaultName: String), doubleForKey(defaultName: String) -> Double
猜你喜欢
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
  • 2013-03-22
  • 1970-01-01
相关资源
最近更新 更多