如何确保窗口只在Cocoa中显示一次?

时间:2011-01-13 15:54:27

标签: objective-c cocoa singleton nswindow

我有一个包含NSImageView的NSWindow。每次单击tableview中的单元格时,都会激活此窗口。我只想要出现1个NSWindow实例,但希望能够更改NSImageView的内容。

如何初始化NSWindow并仅显示1个实例?

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

执行此操作的一种可能性是创建NSWindowController子类以及在实例化窗口控制器时加载的关联窗口XIB。

我确定你已经有一些控制器类处理NSTableView中的鼠标点击。在该类中,只需将上面提到的NSWindowController子类的实例作为实例变量保留。每当您需要显示窗口时,请告诉ivar显示其窗口。

如果窗口的内容依赖于单击的表格单元格,只需在窗口控制器中添加一些修改其窗口内容的方法,然后在显示窗口之前在单击处理方法中调用这些方法。

顺便说一下:我不会在这里使用单身,因为在这种情况下,它只是一个糟糕设计的解决方法(只是我的意见,而不是一个难以理解的事实)。