나는 그 사람에게 파일을 선택하도록 요청하는 창이 나타나도록 노력해 왔으며, 나는 결국 그렇게했다. 문제는 Xcode가 사용중인 메서드가 더 이상 사용되지 않는다고 불평합니다. class reference을 보았지만 "running panels"섹션 아래의 모든 항목은 Mac OS 10.6에서 더 이상 사용되지 않습니다. 지금 내가 사용하고있는 다른 수업이 있습니까? 아래 그림과 같이NSOpenPanel - 더 이상 사용되지 않는 기능이 있습니까?
답변
는 지금까지 내가 아는 한, 당신은 runModal
방법을 사용할 수 있습니다 :
NSOpenPanel *openPanel = [[NSOpenPanel alloc] init];
if ([openPanel runModal] == NSOKButton)
{
NSString *selectedFileName = [openPanel filename];
}
10.6,이 클래스에 몇 가지 변화가 있었다. 이점 중 하나는 블록 기반 API가 있다는 것입니다.
NSOpenPanel *panel = [[NSOpenPanel openPanel] retain];
// Configure your panel the way you want it
[panel setCanChooseFiles:YES];
[panel setCanChooseDirectories:NO];
[panel setAllowsMultipleSelection:YES];
[panel setAllowedFileTypes:[NSArray arrayWithObject:@"txt"]];
[panel beginWithCompletionHandler:^(NSInteger result){
if (result == NSFileHandlingPanelOKButton) {
for (NSURL *fileURL in [panel URLs]) {
// Do what you want with fileURL
// ...
}
}
[panel release];
}];
이것은 10.10에서 사용하는 올바른 코드 인 것처럼 보이지만 ARC를 사용하는 경우 보유 및 릴리스 비트를 제거합니다. – smacdonald
또는 [- beginSheetModalForWindow : completionHandler :] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSSavePanel_Class/#//apple_ref/occ/instm/NSSavePanel/)를 사용할 수 있습니다. beginSheetModalForWindow : completionHandler :) 별도의 열린 대화 상자가 필요없는 경우. – pi3
내가 더 신속한 답변이 없기 때문에이 질문은 유용 나중에 6 년, 그리고 여기에 빠른 해결책을 발견하는 방법을 보면 다음과 같습니다
그 사용 방법에 대한 코드입니다.두 개의 샘플을 찾을 수 있습니다. 하나는 독립 실행 형 윈도우이고 다른 하나는 시트입니다. 그것은`NSOpenPanel`의 슈퍼 클래스입니다`NSSavePanel`에 의해 구현되기 때문에이 방법을 찾을 수 없습니다
스위프트 3.0
func selectIcon() {
// create panel
let panel = NSOpenPanel()
// configure as desired
panel.canChooseFiles = true
panel.canChooseDirectories = false
panel.allowsMultipleSelection = false
panel.allowedFileTypes = ["png"]
// *** ONLY USE ONE OF THE FOLLOWING OPTIONS, NOT BOTH ***
// ********************** OPTION 1 ***********************
// use this if you want a selection window to display that is
// displayed as a separate stand alone window
panel.begin { [weak self] (result) in
guard result == NSFileHandlingPanelOKButton, panel.urls.isEmpty == false, let url = panel.urls.first else {
return
}
let image = NSImage.init(contentsOf: url)
DispatchQueue.main.async {
self?.iconImageView.image = image
}
}
// ********************** OPTION 2 ***********************
// use this if you want a sheet style view that displays sliding
// down from your apps window
panel.beginSheetModal(for: self.view.window!) { [weak self] (result) in
guard result == NSFileHandlingPanelOKButton, panel.urls.isEmpty == false, let url = panel.urls.first else {
return
}
let image = NSImage.init(contentsOf: url)
DispatchQueue.main.async {
self?.iconImageView.image = image
}
}
}
그래서 .begin은 완료 핸들러입니다. 미래의 on-lookers를 위해서 : 당신은 또한 할 수있다 :'response = panel.runModal(); 응답 == NSApplication.ModalResponse.OK {/ * panel.url * /}으로 할 일'''.CANCEL' – eonist
- 1. Symfony 더 이상 사용되지 않는 기능
- 2. 더 이상 사용되지 않는 자일링스 칩
- 3. FromAsyncPattern은 더 이상 사용되지 않는 리소스를 삭제합니까?
- 4. XSD에서 더 이상 사용되지 않는 요소 표시
- 5. eregi가 더 이상 사용되지 않는 문제가 발생했습니다.
- 6. 더 이상 사용되지 않는 속성의 사용
- 7. email_hashes 및 더 이상 사용되지 않는 connect.registerUsers
- 8. iOS에서 더 이상 사용되지 않는 상수
- 9. 더 이상 사용되지 않는 Java 날짜 기능
- 10. 더 이상 사용되지 않는 __proto__의 대체
- 11. 더 이상 사용되지 않는 session_is_registered의 대안
- 12. 더 이상 사용되지 않는 속성은 컴파일시에만 검사됩니까?
- 13. 더 이상 사용되지 않는 메소드를 호출 하시겠습니까?
- 14. 더 이상 지원되지 않는 기능이 Autoconf에 포함되었습니다
- 15. setText 더 이상 사용되지 않음
- 16. 더 이상 사용되지 않는 객체는 어떻게 찾을 수 있습니까?
- 17. 더 이상 사용되지 않는 기능을위한 석영 디스플레이 서비스 교체가 필요하십니까?
- 18. Objective-C 원격 메시지 기능이 더 이상 사용되지 않습니까?
- 19. stringWithContentsOfFile 더 이상 사용되지 않음
- 20. 유형은 더 이상 사용되지 않습니다.
- 21. getch는 더 이상 사용되지 않습니다
- 22. WSE2는 더 이상 사용되지 않습니까?
- 23. LDAP가 더 이상 사용되지 않습니까?
- 24. MSMQ는 더 이상 사용되지 않습니까?
- 25. sgetn이 더 이상 사용되지 않음
- 26. beginSheetForDirectory ... 더 이상 사용되지 않음
- 27. Hibernate는 더 이상 사용되지 않을까?
- 28. Config.LOGD는 더 이상 사용되지 않음
- 29. PixelFormat 1.6이 더 이상 사용되지 않으십니까?
- 30. Android에서 더 이상 사용되지 않는 AbsoluteLayout 클래스를 사용 하시겠습니까?
@Cole 이유입니다. +1 – ughoavgfhw
아, 감사합니다 제시와 @ughoavgfhw. – Cole
시트를 하나씩 실행하는 방법을 포함하여 저장 또는 열린 패널을 실행하는 다른 방법에 대해서도 마찬가지입니다. –