从工作表返回值?

时间:2010-09-02 21:32:04

标签: objective-c cocoa

在我的应用程序中,我打开一个用于用户输入的工作表窗口。因为窗口很复杂并且有一些文本字段和几个按钮,所以我为它创建了一个单独的控制器(InputWindowController)。

当工作表关闭时,我想从InputWindowController接收一些值,但我不知道如何。在所有样本中,我发现工作表中的控件都连接到主控制器中的Outlets,但这不是我想要的。如果我喜欢,我不需要单独的控制器。

此外,我不确定ContextInfo的用途。您可以在工作表打开之前进行设置,并在关闭时接收它。如果我可以在工作表打开时更改工作表中的contextInfo,那真的会有很多帮助。

1 个答案:

答案 0 :(得分:2)

  

当工作表关闭时,我想从InputWindowController接收一些值,但我不知道如何。

为InputWindowController提供委托的属性,以及指定该委托必须实现的方法的协议。让该方法成为InputWindowController将工作表的末尾传递回想要运行工作表的对象的方式。

我建议制作一个model object来保存工作表中显示和编辑的任何值。为InputWindowController提供一个属性,通过该属性可以保存一个这样的模型对象。然后,当想要运行工作表的对象收到表单已结束的InputWindowController通知时,想要运行工作表的对象会询问InputWindowController是否有模型对象。

或者,在调用InputWindowController之前,想要运行工作表的对象可以在模型对象上设置key-value observing。这样,它将在模型对象的属性发生时接收(并能够保存并撤消)这些更改;那么,在表格的最后没有什么可做的。