Swift for macOS:如何跨窗口控制器调用函数?

时间:2018-05-20 06:28:27

标签: swift macos core-data

我正在开发一个简单的ToDo应用程序作为自学Swift的项目。我从目前为止所遵循的Udemy教程中分出来,试图为内置的应用程序添加新功能。

主窗口包含垂直拆分视图控制器。

左视图控制器是一个按标题显示待办事项列表的表。它包含一个函数getToDoItems(),它在调用时更新表。

右视图控制器显示待办事项详细信息。有一个"删除"右侧View Controller上的按钮,用于从Core Data中删除项目,并从左侧View Controller中调用getToDoItems()。 (所以我能够在同一个窗口中跨视图控制器调用函数)

通过弹出窗口添加新项目。弹出窗口正确显示,接受输入,将条目保存到Core Data,然后在单击添加时关闭窗口。但是,主窗口中左视图控制器中包含的对getToDoItems()的调用不会通过。

在PopupWindowVC的顶部,我有:

var toDoListVC : ToDoListViewController? = nil

并且在Add ToDo功能结束时我有

toDoListVC?.getToDoItems()

getToDoItems()包含一个print语句,指示何时成功调用它,当我单击该按钮时它不会运行。我可以告诉数据正确保存,因为删除项目(调用getToDoItems())将显示新条目,停止并重新启动应用程序也会出现。

我认为我可能需要以某种方式链接两个窗口控制器(或完全做其他事情)但我还没有找到关于如何解决此类问题的任何指导或教程。欢迎任何有关优秀教程的建议或链接!

*编辑*

仍在学习StackOverflow ...希望这就是我这样做的方式

那个教程是从2012年开始的,但我在这里找到了这个更新的教程:

link

我一直在阅读并走到了界线:

let quote = fetchedResultsController.object(at: indexPath)

我发现NSTableViews没有indexPaths,但是NSCollectionViews也没有,所以我开始学习NSCollectionViews。我一直表现良好,直到我尝试动态编号CollectionView中的项目。

关于NSCollectionViews的问题在How to use NSCollectionView indexPath to number items?

0 个答案:

没有答案