在两个视图控制器之间传递数据不起作用

Posted

技术标签:

【中文标题】在两个视图控制器之间传递数据不起作用【英文标题】:Passing data between two view controllers are not working 【发布时间】:2016-05-05 18:19:59 【问题描述】:

我试图在两个视图控制器之间传递一些数据,但它不起作用..

这是我试图传递的数据(这些数据来自 parse.com - 两个视图控制器中的代码相同):

var userFile = [PFFile]()
var createdAt = [NSDate]()
var objID = [String]()

这是打开视图控制器的按钮(在我试图从第一个视图控制器中发送数据):

@IBAction func openButtonAction(sender: AnyObject) 
        let modalVC = ModalViewController(nibName: "ModalViewController", bundle: nil)
        modalVC.userFile = self.userFile
        modalVC.createdAt = self.createdAt
        modalVC.objID = self.objID

        print("USERFILE: \(modalVC.userFile.count)")
        presentViewController(modalVC, animated: true, completion: nil)
    

视图控制器是一个连接到ViewStoryModalViewController.swiftModalViewController.xib

这是视图控制器中的 viewDidLoad 我试图将数据发送到:

override func viewDidLoad() 
        super.viewDidLoad()

        print("USERFILECOUNT: \(self.userFile.count)")
    

我的问题是这是我在 xCode 输出中得到的消息:

这里可能有什么问题?有什么建议吗?

【问题讨论】:

我们能看到两个视图控制器的完整代码吗?例如,很难说出第一个中的self.userFile 包含什么。 @grez 它确实包含一个对象。我在查询后使用print 进行了检查。 【参考方案1】:

xCode 输出告诉数组 self.userFile 包含零个元素,这并不意味着它传递错误。它只是空的。

print("USERFILECOUNT: \(self.userFile.count)")

在将它传递给模态vc之前检查它是否为空。

【讨论】:

通过前不为空。 如果你的 ModalViewController.xib 与 ViewStoryModalViewController.swift 连接,你应该这样初始化它: let modalVC = ViewStoryModalViewController(nibName: "ModalViewController", bundle: nil) 我收到此错误:Use of unresolved identifier "ViewStoryModalViewController"。这是我的控制器:s32.postimg.org/rmrfuw91h/… - 在课堂内:class ModalViewController: UIViewController 里面声明了什么类? ViewStoryModalViewController.swift 里面写着:class ModalViewController: UIViewController 【参考方案2】:

试试这个代码 您首先需要呈现,然后尝试设置变量。

IBAction func openButtonAction(sender: AnyObject) 
        let modalVC = ModalViewController(nibName: "ModalViewController", bundle: nil)
      print("USERFILE: \(modalVC.userFile.count)")
        presentViewController(modalVC, animated: true, completion: nil)
        modalVC.userFile = self.userFile
        modalVC.createdAt = self.createdAt
        modalVC.objID = self.objID
    

【讨论】:

试过了,还是得到 0 件。

以上是关于在两个视图控制器之间传递数据不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为什么这个代码在控制器之间传递数据不起作用?

IOS Segue 在自定义标签栏中不起作用

Tableview.reloadData 不起作用

视图控制器之间的导航不起作用

从 Unwind segue 触发时,Push segue 不起作用

视图控制器和 UIView 之间的简单委托不起作用