我正在製作一個應用程序,它在許多不同的上下文中包含相同的按鈕組。這些按鈕會將其操作發送到每個上下文中的不同對象。我希望能夠在包含按鈕的IB中設計一個單獨的NSView,然後能夠在保持鏈接的同時將該視圖的副本放在筆尖的很多位置,以便更改傳播。我想將這些實例中的每一個連接到不同的對象,並讓按鈕將其操作發送到其父視圖所連接的任何對象。可重複使用的接口位,設計在IB
我想創建一個NSView的子類,它在加載時用另一個從nib文件加載的視圖替換自己,將連接的對象設置爲文件的所有者,但我不相信這是最乾淨的方法。這是我的實現這個想法(哪個 - 工作):
@implementation AVNViewFromNib
- (void)awakeFromNib
{
//Load the nib whose name is specified by the "nibFile" key
NSNib* viewNib = [[NSNib alloc] initWithNibNamed:[self valueForKey:@"nibFile"] bundle:[NSBundle mainBundle]];
NSMutableArray* topLevelObjects = [NSMutableArray new];
[viewNib instantiateNibWithOwner:relatedObject topLevelObjects:&topLevelObjects];
//Find our replacement view in that nib
for (id currentObject in topLevelObjects)
{
if ([currentObject isKindOfClass:NSClassFromString(@"AVNReplacementView")])
{
representedView = currentObject;
break;
}
}
//Copy appropriate properties from us to our representedView
[representedView setAutoresizingMask:[self autoresizingMask]];
[representedView setFrame:[self frame]];
[[self superview] addSubview:representedView];
//We were never here. :)
[self removeFromSuperview];
[viewNib autorelease];
}
@end
@implementation AVNReplacementView
@end
這是最乾淨的方法?有沒有一個標準的方法來解決這個問題?
令人討厭的是,它沒有保留一個鏈接(但想到它會如何)。但只是一個真棒小費!謝謝彼得! – bladnman 2011-08-11 17:24:24