gpt4 book ai didi

objective-c - 如何以编程方式初始化 nib 值

转载 作者:行者123 更新时间:2023-12-03 17:59:28 27 4
gpt4 key购买 nike

我正在尝试以编程方式初始化 View 内的值(在 nib 文件内创建)。我将尝试对我的场景做一些简要介绍:

我有一个 nib 文件,里面有 View 。该 View 有一些项目(TextViews、CheckBox 等)

该 View 被伪装成将新数据包含到我的程序中的模板(它不是主视图)。这是 View 的窗口初始化:

NewWindow = [[NSWindow alloc] initWithContentRect:frame
styleMask:( NSBorderlessWindowMask| NSClosableWindowMask | NSTitledWindowMask)
backing:NSBackingStoreBuffered
defer:NO];
[NewWindow setIsVisible:NO];
[NewWindow setReleasedWhenClosed:NO];
[NewWindow setBackgroundColor:[NSColor windowBackgroundColor]];
[NewWindow setContentView: MyView];
[NewWindow setDelegate:self];

我称窗口使其可见。

MyView 是一个连接到 Nib View 的 IBOutlet。这个 View 是一个修改后的 NSView,它有自己的类文件。

View (IBOutlets)上的所有内容都已连接并正常工作(我知道,因为例如,当我单击按钮时,与其相关的操作工作得很好)。

我在 MyViews 类上创建了一个初始化方法,以根据我的需要初始化模板的字段。我这样调用初始化:

[MyView initialize:InitClass];

我面临的问题是,这个 MyView 对象与 nib 文件中的对象不同,即使连接了所有连接 (IBOutlets)。然后,当我运行此方法时,没有任何反应(因为初始化方法试图更改未分配字段的值)。

我添加了一些 NSLog 来查看我的对象地址,并确认 nib 文件上的地址与 IBOutlet 上的地址不同

我正在创建这个 IBOutlet 属性,如下所示:

@property (assign) IBOutlet MyNewView *MyView;

有人知道如何解决这个问题吗?

最佳答案

  1. 您永远不应该调用viewWillMoveToWindow:。这是一个信息生命周期事件。

  2. 您似乎没有显示足够的代码。我没有看到任何证据表明您正在加载 Nib 。当然,如果您通过调用 [[MyView alloc] init] 或类似方法实例化 MyView,那是一个不同的 MyView。如果您希望 socket 指向 Nib 中的 socket ,则需要以您自己的身份加载 Nib 。

关于objective-c - 如何以编程方式初始化 nib 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8628190/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com