Objective c 如何使用单独的viewController正确设置NSPover

Objective c 如何使用单独的viewController正确设置NSPover,objective-c,cocoa,interface-builder,nspopover,Objective C,Cocoa,Interface Builder,Nspopover,我创建了一个非常简单的测试程序。它有一个按钮。单击按钮将显示带有标签的nspover。该标签位于一个单独的xib文件中,它有自己的NSViewController 目标是,当我在主屏幕上单击按钮时,弹出窗口将显示viewcontroller的xib文件。xib文件的标签应该将其文本设置为“it works” 嗯。。它可以工作,但只能在第二次加载popover后工作。第一次单击按钮时,标签仍具有其旧的默认值。但从第二次点击开始,“它就起作用了”有人知道是什么导致了这个问题吗?它只有大约5行代码在这

我创建了一个非常简单的测试程序。它有一个按钮。单击按钮将显示带有标签的
nspover
。该标签位于一个单独的xib文件中,它有自己的
NSViewController

目标是,当我在主屏幕上单击按钮时,弹出窗口将显示
viewcontroller
的xib文件。xib文件的标签应该将其文本设置为“it works”


嗯。。它可以工作,但只能在第二次加载popover后工作。第一次单击按钮时,标签仍具有其旧的默认值。但从第二次点击开始,“它就起作用了”有人知道是什么导致了这个问题吗?它只有大约5行代码在这个存储库中可以看到这些代码-->

调用
[mainScreenPopoverViewController视图]
-(void)windowDidLoad
方法中。这将把您的视图加载到内存中

调用前<代码>[Main Screen PopOverview Controller view](文本字段地址为0x0)

您不应该对所有IBOutlet使用strong属性

@property (nonatomic, strong) IBOutlet NSTextField *textField;
看看

从实用角度来看,iOS和OS X中的插座应 定义为声明的属性。出口一般应该是薄弱的, 除了从文件的所有者到nib文件中的顶级对象 (或者,在iOS中,一个情节提要场景)应该是强的。出口 因此,您创建的应用程序通常应较弱,因为:

  • 创建到视图控制器视图的子视图或 例如,窗口控制器的窗口是任意引用 在不意味着所有权的对象之间

  • 强出口通常由框架类指定(例如, UIViewController的视图出口或NSWindowController的窗口 出口)


调用
[MainScreenPopOverview控制器视图]
-(void)windowDidLoad
方法中。这将把您的视图加载到内存中

调用前<代码>[Main Screen PopOverview Controller view](文本字段地址为0x0)

您不应该对所有IBOutlet使用strong属性

@property (nonatomic, strong) IBOutlet NSTextField *textField;
看看

从实用角度来看,iOS和OS X中的插座应 定义为声明的属性。出口一般应该是薄弱的, 除了从文件的所有者到nib文件中的顶级对象 (或者,在iOS中,一个情节提要场景)应该是强的。出口 因此,您创建的应用程序通常应较弱,因为:

  • 创建到视图控制器视图的子视图或 例如,窗口控制器的窗口是任意引用 在不意味着所有权的对象之间

  • 强出口通常由框架类指定(例如, UIViewController的视图出口或NSWindowController的窗口 出口)


嗨,好的,我知道强/弱IBO。我的错误。我刚刚做了这个测试应用程序,所以显示弹出代码。有一件事,解决方案是可行的,但对于为什么会这样做,是否存在某种联系?我相信nib加载代码已经将对象实例化到内存中。使用断点取消IBAction并检查textfield的地址。设置断点时,我了解了现在发生的事情。谢谢。嗨,好的,我知道强弱的IBO。我的错误。我刚刚做了这个测试应用程序,所以显示弹出代码。有一件事,解决方案是可行的,但对于为什么会这样做,是否存在某种联系?我相信nib加载代码已经将对象实例化到内存中。使用断点取消IBAction并检查textfield的地址。设置断点时,我了解了现在发生的事情。谢谢