无法在 ViewController 和子类之间传递数据

Posted

技术标签:

【中文标题】无法在 ViewController 和子类之间传递数据【英文标题】:Can't pass data between ViewController and subclass 【发布时间】:2016-07-22 13:19:03 【问题描述】:

我一直在尝试创建一个数轴应用程序,它使用 UIScrollView 类将所有标签和刻度添加到数轴(基本上创建 UI),以便我可以实现无限滚动的错觉。

问题是数字线是交互式的,所以我必须访问 UIScrollView 的输入,例如在数字线上选择一个数字。 但是,每当我尝试将数据(例如选择的数字)从 UIScrollView 类传递到 ViewController 类时,它永远不会起作用,因为 ViewController 中的数据值保持在 0。这是我的代码:

(ItemVC 是持有 scrollView 的视图控制器,CalculationVC 是我要传递数据的那个)

//In the UIScrollView class
let destVC: ItemVC = ItemVC()
destVC.number = myNumber

//In the ItemVC class
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)  
    if segue.identifier == "Go" 
        let destVC: CalculationVC = CalculationVC()
        destVC.firstNumber = number
    

【问题讨论】:

我猜问题出在 UIScrollView 类代码中,因为在 ItemVC 中 number 的值永远不会更改为适当的值,它只是保持在 0。 【参考方案1】:

应该是这样的:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
      if let calculationVC = segue.destinationViewController as? CalculationVC 
           calculationVC. firstNumber = number
      
 

您需要将其传递给实际的视图控制器,而不是该控制器类的某个实例

【讨论】:

以上是关于无法在 ViewController 和子类之间传递数据的主要内容,如果未能解决你的问题,请参考以下文章

Vue 如何接受IOS传过来的window数据

一篇文章学会页面传值的10种方法(下)

在 TapBarController 内的 ViewController 和 NavigationController 之间传递值

无法在 XIB 中添加子类

VC/MFC 对话框工程中 主窗体与子窗体之间如何传值?

UICollectionView 子类可在多个 viewController 中重用