2011-12-25 82 views
0

我试图以编程方式初始化视图内的值(创建在笔尖文件内)。 我会尽量对我的场景做一点简单介绍:如何以编程方式初始化笔尖值

我有一个nib文件,里面有一个视图。这个视图有一些项目(TextViews,CheckBox等)

这个视图被假装为一个包含新数据到我的程序(这不是主视图)的模板。这里是视图的窗口初始化:

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是一个IBOutlet连接到笔尖的视图。这个视图是一个经过修改的NSView,它拥有它自己的类文件。

视图上的所有事物(IBOutlets)都已连接并正常工作(我知道,因为当我点击一个按钮时,与它相关的操作就可以正常工作)。

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

[MyView initialize:InitClass]; 

我的问题,我面对的是,这MyView的对象是不一样的笔尖文件中的一个,甚至连所有连接(IBOutlets)。然后,当我运行这个方法时,什么也没发生(因为初始化方法试图改变未分配字段的值)。

我已经包括了一些的NSLog看到我的对象地址,并确认在笔尖文件中的一个不一样的一个在IBOutlet中

我创建这个IBOutlet中属性是这样的:

@property (assign) IBOutlet MyNewView *MyView; 

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

回答

1
  1. 您绝不应该拨打viewWillMoveToWindow:。这是一个信息终生事件。

  2. 它似乎没有显示足够的代码。我没有看到任何证据显示你正在加载笔尖。当然,如果你通过调用[[MyView alloc] init]或类似的方法来实例化MyView,那是一个不同的MyView。如果你想让你的插座指向笔尖中的那个,你需要将自己作为所有者加载到笔尖上。

+0

感谢(1),我已经将它作为一个测试,但我忘了删除它。 关于这个错误,我刚刚发现了这个问题。它不在代码中,在NIB文件中(使用MyView的实例)。 非常感谢! – 2011-12-25 06:26:49

相关问题