我怎样绑定通过程序在鉴子我NSCollectionView?
-
06-07-2019 - |
题
我已经成功地创建了一个NSCollectionView和添加标签的图样IB,开到一个酒店的我表示的对象。我现在想要通过程序创建一个NSButton和NSTextField与NSTextField开一个酒店的我表示的对象。当按钮被点击我想告诉和隐藏的NSTextField.
这个问题,我们遇到的是如果我把我的初始化时代为我控制的查看是initWithCoder方法,并结合在看的awakeFromNib,结合不上瘾了。如果我把初始化为我控制在awakeFromNib,当时的点击按钮,我没有访问控制在我看来(他们是空的时候打印出来,只使用).
从什么我可以告诉它看起来像该问题可能的方式NSCollectionView工作,它创建的一个实例来看,随后复制它怎么每许多对象是在收集图。我怎么得到的按钮来初始化和结合的工作与复制的原型?
下面是我的初始化时代码和我绑在awakeFromNib为我的子类观点:
子视图.h
@interface SubView : NSView {
NSButton *button;
NSTextField *textField;
IBOutlet NSCollectionViewItem *item; // Connected in IB to my NSCollectionViewItem
}
- (IBAction)buttonClicked:(id)sender;
@end
子视图.m
@implementation SubView
- (id)initWithCoder:(NSCoder *)decoder
{
id view = [super initWithCoder:decoder];
button = [[NSButton alloc] initWithFrame:NSMakeRect(50, 95, 100, 20)];
[button setTitle:@"Begin Editing"];
[button setTarget:self];
[button setAction:@selector(buttonClicked:)];
[self addSubview:button];
textField = [[NSTextField alloc] initWithFrame:NSMakeRect(10, 10, 100, 75)];
[self addSubview:textField];
return(view);
}
- (void)awakeFromNib
{
// Bind the textField to the representedObject's name property
[textField bind:@"value"
toObject:item
withKeyPath:@"representedObject.name"
options:nil];
}
- (IBAction)buttonClicked:(id)sender
{
[button setTitle:@"End Editing"];
[textField setHidden:YES];
}
@end
解决方案
这听起来与我刚才所做的相似,所以也许这就是你所需要的。
子类 NSCollectionView 并覆盖:
- (NSCollectionViewItem *)newItemForRepresentedObject:(id)object
在 newItemForRepresentedObject:
中,检索视图项,然后添加控件和任何编程绑定:
@implementation NSCollectionViewSubclass
- (NSCollectionViewItem *)newItemForRepresentedObject:(id)object {
// Allow the superclass to create or copy the collection view item
NSSCollectionViewItem *newItem = [super newItemForRepresentedObject:object];
// Get the new item's view so you can mess with it
NSView *itemView = [newItem view];
//
// add your controls to the view here, bind, etc
//
return newItem;
}
@end
希望这是你需要的地方......
其他提示
-awakeFromNib
不叫上查看一NSCollectionViewItem如果这一观点是相同的尖为NSCollectionView,但它被称为如果你把图在一个单独的笔尖。
- 创建一个空尖文件(BlahBlahCollectionViewItem.尖).
- 切断收集项目查出的任何尖你有
- 粘贴到新的尖文件
- 更改类的其主要NSCollectionViewItem.
- 连接查看的出口在主要的新粘贴景
- 打开的笔尖文件包含NSViewController
- 选择相关的NSViewControllerItem
- 改变其笔名属于名称的新的笔尖
- 保持你的代码中
-awakeFromNib
对于从原型NSCollectionViewItem复制的视图,不会调用
-awakeFromNib
。将绑定代码放在 initWithCoder:
中,你应该没问题。
不隶属于 StackOverflow