많은 다른 상황에서 동일한 버튼 그룹을 포함하는 앱을 만들고 있습니다. 버튼은 각 컨텍스트의 다른 객체에 액션을 보냅니다. 단추를 포함하는 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