첫 번째 사항 먼저 프로젝트에 ScreenSaver.framework
을 포함해야합니다. 필요한 클래스 인 ScreenSaverView
과 ScreenSaverDefaults
을 제공합니다.
당신은 이미 ScreenSaverView.m
이라는 파일이 있다고합니다. "화면 보호기 옵션 ..."단추를 비활성화하려면 -hasConfigureSheet
메서드를 내 보내야한다고 말하는 사람과 함께하십시오. 이것은 당신이해야했듯이 ScreenSaverView
을 서브 클래 싱했는지 궁금하게 만든다. (NSObject
대신 서브 클래스를 만들었습니까?) ScreenSaverView
-hasConfigureSheet
과 같은 메서드를 내 보냅니다. 서브 클래 싱을 실시해, 거기에 적절한 메소드를 오버라이드 (override) 할 필요가 있습니다.
몇 가지 더 :
당신은 당신의 구성 시트의 UI가 포함 된 프로젝트에서 XIB 파일을 포함해야하고, 당신이 패널을 참조하도록 하위 클래스에 '인터페이스를
IBOutlet
의를 제공하고해야
포함 된 UI 요소 (실제로 콘센트가 필요한 요소).
마지막으로이 유사한 방식으로 구성 시트 가져 오기해야 당신의 -configureSheet 방법 (당신의 IBOutlet
의의 예는, configSheet
가 될 것이다 일) :
if (configSheet == nil)
{
if ([NSBundle loadNibNamed:@"myConfigSheet" owner:self] == NO)
{
NSLog(@"load config sheet failed");
}
}
// then retrieve your defaults and set up your sheet; you should
// be working with ScreenSaverDefaults, a subclass of NSUserDefaults.
// then return 'configSheet'
편집 :
만약 내가 이미 알고있는 것을 말하려고한다면 사과를하십시오. 그러나 configSheet
에 어려움을 겪고 있다고 말했 읍니다. 그래서 나는 모든 기지를 다루고 있습니다.My_ScreensaverView.h
에서
, 당신의 패널 출구를 선언 : 나는 당신이 실제로 시트에 사용하는 어떤 클래스 모르는 간단하기 때문에, id
대신 NSWindow *
또는 NSPanel *
을 사용
IBOutlet id configSheet;
참고. 이상적으로는 시트에 NSPanel을 사용해야합니다.
nib 파일에서 File's Owner
이 My_ScreensaverView
인 인스턴스인지 확인하십시오. 이 객체의 아이콘을 선택한 다음 ID 속성을 사용하여 클래스를 지정할 수 있습니다.
configSheet
콘센트와 패널을 연결하십시오. 이 작업을 수행하는 한 가지 방법은 File's Owner
개체에서 창 또는 패널 아이콘으로 드래그하는 동안 Ctrl 키를 누른 상태로 나타나는 팝업에서 configSheet
을 선택하는 것입니다.
언제나처럼 행운을 빈다.
저는 실제로 내 프로젝트에'ScreenSaver.framework'을 가지고 있고'ScreenSaverView'를'My_ScreensaverView'로 서브 클래 싱하려고합니다. 혼란을 드려 죄송합니다. 내 문제는'.xib' 파일에'My_ScreensaverView.h'의'configSheet'를 어떻게 연결하는지 모른다는 것입니다. – JacobEvelyn
@ ConstableJoe 몇 가지 추가 정보를 제공했습니다. – trudyscousin
당신에게 무엇을 말해야할지 모르겠습니다. 거의 동일한 코드를 가지고 있었지만'IBOutlet id configSheet'를'.xib' 파일 자체에 링크하는 법을 모르겠습니다. 나는 보통'.xib '내의 엘리먼트를 ctrl-click하고 그것을 헤더 파일의'IBOutlet id configSheet'로 드래그한다고 믿지만 그것은 나를 위해 작동하지 않는다. 말이 돼? Xcode 4에서 사용할 수 있습니까? – JacobEvelyn