如何在不创建新实例的情况下访问另一个View Controller的变量?

时间:2017-03-14 22:21:16

标签: swift

我最近一直试图将我的应用程序迁移到MVC格式,我想知道如何访问View Controller的变量(尝试从.swift文件访问它们)而不必创建新的实例视图控制器。例如:

HomePageViewController().objectIDs.append(post.objectId!)


HomePageViewController().postTitles.append(post["Title"] as! String)


HomePageViewController().imageFiles.append(post["imageFile"] as! PFFile)


HomePageViewController().descriptions.append(post["description"] as! String)


HomePageViewController().userNames.append(post["originalPosterUserName"] as! String)


HomePageViewController().numOfComments.append(String(describing: post["numberOfComments"]!))


print(HomePageViewController().userNames, "This is a test")

最后的print语句打印'[]这是一个测试',数组内没有数据。在HomePageViewController文件中,这可以很好地工作。我假设这不起作用,因为我创建了HomePageViewController的新实例并改变了那些变量而不是当前变量。所以,我的问题是,如何在不需要创建新实例的情况下更改当前HomePageViewController的变量?

this这样的解决方案也不起作用,因为我有多个具有相同变量名的类。

我很感激任何帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

如果您正在实施MVC,那么您希望在多个视图控制器之间共享的数据应包含在模型中,并实例化为单例并全局访问(如UserDefaults)或从一个控制器传递到另一个控制器作为呈现新VC时的参数。

根据定义,View Controllers不应该访问彼此的变量。