모달 세션에는 모달 창이 필요합니다.
-
13-12-2019 - |
문제
툴바 아래에 나타나도록 시트 같은 창을 열려고 합니다.저는 이를 위해 O'Reilly 튜토리얼을 사용했습니다.그러나 이 오류는 지나칠 수 있습니다.모달 세션에는 모달 창이 필요합니다.
"Visible At Launch"를 선택하면 창이 창으로 로드됩니다.
선택 여부에 관계없이 "모달 세션에 모달 창이 필요합니다." 오류가 발생합니다.
Window.xib, ProgressModal.xib가 있습니다.
Window 구현 파일에서는 다음을 사용합니다.
-(IBAction)loadProgress:(id)sender{
[self progressStatus:progressWindow];
}
- (void)progressStatus:(NSWindow *)window {
[NSApp beginSheet: window
modalForWindow: mainWindow
modalDelegate: nil
didEndSelector: nil
contextInfo: nil];
[NSApp runModalForWindow: window];
[NSApp endSheet: window];
[window orderOut: self];
}
- (IBAction)cancelProgressScrollView:(id)sender {
[NSApp stopModal];
}
ProgressModal.xib 설정이 잘못되었을 수 있습니다.클래스로 "Window"를 갖는 NSObject가 있습니다.모든 연결은 그것을 통해 이루어집니다.
그러나 이번에도 창을 로드하지만 모달로 로드하지는 않습니다.
어떤 아이디어가 있나요?
해결책 2
위에서 언급했듯이 ProgressModal 창에서 개체를 끌어서이를 통해 내 연결을 만들었습니다.내가 한 일은 파일의 소유자가 내 창 클래스를 만들었습니다.문제가 해결되었습니다.
다른 팁
첫 번째 줄에 다음을 입력하세요. progressStatus
방법:
NSLog(@"%@", window);
로그 출력이 null인 경우가 바로 그 이유입니다.
XIB를 사용하여 모달 시트를 만드는 단계:
- 패널을 MainMenu.xib로 드래그하세요.
- 추가하다
@property (assign) IBOutlet NSPanel *sheetPanel;
당신의AppDelegate.h
파일 @synthesize sheetPanel = _sheetPanel;
에서AppDelegate.m
파일- 1단계에서 생성된 MainMenu.xib에 있는 패널의 새 참조 콘센트를 2단계에서 생성된 sheetPanel 속성에 연결합니다.
다음 코드를 사용하여 모달 시트를 표시합니다.
[NSApp beginSheet:_sheetPanel modalForWindow:_mainWindow modalDelegate:self didEndSelector:@selector(didEndSheet:returnCode:contextInfo:) contextInfo:nil];
편집 : 당신이 모달 창을 원했습니다.시트를 원한다면 runModalForWindow:
를 전혀 사용하지 마십시오.
시도 :
[NSApp beginSheet: window
modalForWindow: mainWindow
modalDelegate: nil
didEndSelector: nil
contextInfo: nil];
.
필요할 경우에 따라 콜백을 정의하는 것이 좋습니다.예를 들어.
[NSApp beginSheet: window
modalForWindow: mainWindow
modalDelegate: self
didEndSelector: @selector(sheetDidEnd:returnCode:contextInfo:)
contextInfo: nil];
. 제휴하지 않습니다 StackOverflow