मैं व्यक्ति को फ़ाइल चुनने के लिए कहने के लिए एक खिड़की पाने की कोशिश कर रहा हूं, और अंततः मैंने किया। समस्या यह है कि, एक्सकोड शिकायत करता है कि जिस विधि का मैं उपयोग कर रहा हूं उसे बहिष्कृत किया गया है। मैंने class reference में देखा, लेकिन "रनिंग पैनल" अनुभाग के तहत सब कुछ मैक ओएस 10.6 के रूप में बहिष्कृत कर दिया गया है। क्या अब एक अलग वर्ग है जिसका उपयोग मैं कर रहा हूं?NSOpenPanel - सब कुछ बहिष्कृत?
उत्तर
जहाँ तक मुझे पता है, आप runModal
विधि नीचे दिखाया गया है की तरह उपयोग कर सकते हैं:
NSOpenPanel *openPanel = [[NSOpenPanel alloc] init];
if ([openPanel runModal] == NSOKButton)
{
NSString *selectedFileName = [openPanel filename];
}
10,6 में, वहाँ इस वर्गों के लिए कुछ परिवर्तन किया गया था। लाभों में से एक यह है कि अब एक ब्लॉक-आधारित एपीआई है।
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 के तहत उपयोग करने के लिए सही कोड है, लेकिन यदि आप एआरसी का उपयोग कर रहे हैं तो बनाए रखने और बिट्स को रिहा करने से छुटकारा पाएं। – smacdonald
वैकल्पिक रूप से आप इसका उपयोग कर सकते हैं [- startSheetModalForWindow: completHandler:] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSSavePanel_Class/#//apple_ref/occ/instm/NSSavePanel/ startSheetModalForWindow: completHandler :) यदि आप एक अलग खुला संवाद नहीं चाहते हैं। – pi3
देखकर मैं कैसे पाया इस सवाल उपयोगी छह साल बाद, और के बाद से वहाँ कोई तेजी से उत्तर दिए गए हैं, यहाँ एक तेज समाधान है:
यहाँ का उपयोग कैसे उस पर एक कोड स्निपेट है।
आपको दो नमूने मिलेंगे, एक स्टैंड स्टैंड विंडो के रूप में और दूसरा शीट के रूप में।
स्विफ्ट 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' एक पूरा करने वाला हैंडलर है। भावी ऑन-लुकर्स के लिए: आप यह भी कर सकते हैं: 'प्रतिक्रिया दें = panel.runModal(); अगर प्रतिक्रिया == NSApplication.ModalResponse.OK {/ * panel.url * /} के साथ चीजें करें' 'कैंसल' के लिए भी काम करता है – eonist
- 1. NSOpenPanel
- 2. सब कुछ neo4j
- 3. सब कुछ अक्षम छोड़कर #
- 4. NSOpenPanel setAllowedFileTypes
- 5. NSOpenPanel शीट
- 6. Git सब कुछ उपेक्षा लेकिन कुछ उपनिर्देशिका
- 7. सब कुछ एक अभिव्यक्ति है
- 8. एसक्यूएल कहां कॉलम = सब कुछ
- 9. एचटीएमएल कैनवास छाया सब कुछ
- 10. कम संकलक युगल सब कुछ
- 11. हेरोकू, पतला और सब कुछ
- 12. जावा प्रॉक्सी सर्वर का उपयोग, सब कुछ
- 13. गिट सब कुछ खींच नहीं खींच रहा
- 14. सब कुछ एक वस्तु में रूबी है?
- 15. केकफ़्प धूमकेतु सब कुछ ब्लॉक करता है
- 16. पायथन ढेर से सब कुछ बनाता है?
- 17. HttpUtility.HtmlEncode सब कुछ एन्कोड नहीं करता
- 18. डब्ल्यूपीएफ में सब कुछ धुंधला क्यों है?
- 19. Regex के बाद सब कुछ निकालें: (सहित :)
- 20. --hard सब कुछ रीसेट लेकिन 4 फ़ाइलों
- 21. गिट पुश कुछ भी नहीं करेगा (सब कुछ अद्यतित)
- 22. NSOpenPanel RunModal के लिए प्रारंभिक निर्देशिका निर्दिष्ट करना?
- 23. NSOpenPanel एक निर्देशिका चुनें (फ़ाइल नहीं)
- 24. Zend स्तंभों का उपयोग नहीं, और सब कुछ
- 25. सब कुछ आयात करना (*) मॉड्यूल से गतिशील रूप से
- 26. अपना खुद का 'सब कुछ एक फ़ाइल है' इंटरफ़ेस
- 27. माणिक regex - कैसे चरित्र तक सब कुछ मैच के लिए -
- 28. डब्ल्यूएसडीएल बनाम मेक्स के बारे में सब कुछ?
- 29. सब कुछ एक लुआ बाइटकोड खंड में रखते हुए?
- 30. प्रिंट सब कुछ आयात किया जा सकता है कि
@Cole कारण आप इस विधि का नहीं मिल सका क्योंकि यह 'NSSavePanel' है, जो' NSOpenPanel' के सुपर क्लास द्वारा कार्यान्वित किया जाता है। +1 – ughoavgfhw
आह, धन्यवाद जेसी और @Ughoavgfhw। – Cole
एक ही चादर के रूप में चलाने के तरीके सहित, सहेजने या खुले पैनल को चलाने के बेहतर तरीके, दूसरे के बारे में भी सच है। –