2011-02-15 2 views
13

저는 코코아와 2 시간 동안 고생하고 있습니다. 도구 모음에 사용자 지정보기를 추가하고 싶습니다. 그래서, (IB와 함께) 창에 NSToolbar를 추가하고 완벽하게 작동하는 내보기를 추가했습니다. IB는 자동으로 NSToolbarItem을 생성했습니다. 나는 여기 애플에서 지시를 따랐다. http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Toolbars/Tasks/AddRemoveToolbarItems.html#//apple_ref/doc/uid/20000755-BBCGJCDJ툴바에 사용자 정의보기 추가

문제는 내가 지금 무엇을 해야할지 모르겠다.보기가 보이지 않는다. 라벨이 창에 표시 되더라도.

여기에 내가 그리는 데 사용하는 코드는 (매우 간단,이 테스트의 목적이다)의

- (void)drawRect:(NSRect)dirtyRect { 
    [[NSColor blackColor] set]; 
    [[NSBezierPath bezierPathWithRect:self.bounds] fill]; 
} 

누군가가 나를 도울 수 있습니까?

미리 감사드립니다.

+0

보기를 생성하고 유지 관리하는 데 사용할 코드를 게시해야 할 수도 있습니다. 설명서의 코드는 복사/붙여 넣을 때 저에게 효과적이었습니다. 몇 년 전에 제 자신의 응용 프로그램에 맞게 수정되었으므로 100 % 그대로 사용하지 않으면 사용자 정의 코드에 문제가있을 수 있습니다. :-) –

+0

내 게시물을 업데이트했습니다. 나는 IB를 사용한 이후로 쓸만한 게 없다고 생각합니다. 내가 맞습니까? –

답변

19

나는이 문제를 해결했다.

펜촉의 뿌리에 내 사용자 정의보기를 넣습니다. 클래식 NSToolbarItem을 추가하고 사용자 지정보기 용과 NSToolbarItem 용으로 각각 하나씩 두 개의 콘센트를 만들었습니다. -(void)awakeFromNib에서 사용자 정의보기를 사용하여 NSToolbarItem에서 setView:을 호출했습니다.

인터넷의 일부 자원에 따르면 이는 Interface Builder의 버그입니다.

+0

사실 Xcode에는 어떤 종류의 버그가 있으며 버전 4.2에서는 여전히 문제가 있습니다. – charles

+4

NSView를 IB의 툴바로 드래그하면 해당 뷰를 보유한 NSToolbarItem이 자동으로 생성됩니다. NSToolbarItem을 이미 가지고 있었기 때문에 IB에서 사용자 정의 뷰를 설정하는 것과는 대조적으로 NSToolbarItem에서 setView를 프로그래밍 방식으로 호출하는 것이 전부였습니다 (아마도 버그 xibs가 풀린 길과 함께) – valexa

6

Apple 엔지니어 인 http://www.mail-archive.com/[email protected]/msg35673.html에 따르면 Interface Builder에는 NSToolbarItem의보기로 사용될 때 "사용자 지정보기"(IB에서 생성 된 NSView)가 제대로 디코딩되지 않으므로 버그가 있습니다. 도구 모음에 나타납니다. NSButton과 NSBox와 같은 다른 종류의 NSView는 도구 모음 항목으로 잘 작동합니다. Interface Builder에서이 항목을 만들고 도구 모음으로 드래그하여 툴바 항목으로 만들 수 있습니다.

(위에서 설명한 토론은 런타임에 XIB에서 "사용자 지정보기"가 어떻게 생성되는지에 대한 것임을 의미합니다. initWithFrame : 대신 initWithCoder :를 사용합니다. 토론 날짜는 2009 년이지만 아직까지는 그렇지 않습니다.

내 경우에는 커스텀 NSView 서브 클래스를 구현하는 것이 아니라 일련의 컨트롤 (볼륨 슬라이더와 최소/최대 버튼)을 래핑하기 위해 일반적인 NSView를 사용하고있었습니다. NSBox 대신 컨테이너로 NSBox를 사용하여이 문제를 피할 수있었습니다. NSBox를 투명하고 제목이 없으며 경계선이 없도록 만들었으므로 일반 NSView 래퍼와 똑같이 작동했습니다. 이것은 IB에서 좀 더 많은 작업 이었지만 뷰를 프로그래밍 방식으로 툴바 항목에 연결하는 번거 로움을 덜어 줬습니다.

+0

NSBox는 거의 항상 IB 용 NSView보다 낫다. – alfwatt

관련 문제