我创建了一个非常简单的测试程序。它有一个按钮。单击该按钮会显示带有标签的NSPopover
。该标签位于具有自己的NSViewController
的单独xib文件中。
目标是,当在主屏幕上,当我点击按钮时,弹出窗口将显示viewcontroller
的xib文件。并且xib文件的标签应该将其文本设置为“It works”。
嗯..它有效,但仅在之后第二次加载弹出框。在第一次单击该按钮时,标签仍具有其旧的默认值。但是从第二次点击开始,“它有效”。 是否有人知道可能导致此问题的原因?它只有大约5行代码代码可以在这个存储库中看到 - > https://github.com/patchthecode/testtest
答案 0 :(得分:1)
在[mainScreenPopoverViewController view];
方法中调用- (void)windowDidLoad
。这会将您的视图加载到内存中。
在致电[mainScreenPopoverViewController view];
之前(文本地址为0x0)
您不应对所有IBOutlet使用强属性。
@property (nonatomic, strong) IBOutlet NSTextField *textField;
从实际角度来看,iOS和OS X应该是 定义为声明的属性。奥特莱斯一般应该很弱, 除了从文件所有者到nib文件中的顶级对象的那些 (或者,在iOS中,故事板场景)应该是强大的。那个奥特莱斯 因此,你创造的应该通常很弱,因为:
您为视图控制器的视图或a的子视图创建的插座 例如,窗口控制器的窗口是任意引用 在不暗示所有权的对象之间。
强大的出口通常由框架类指定(例如, UIViewController的视图出口,或NSWindowController的窗口 出口)。