2010-08-26 10 views
13

ठीक है, यह वास्तव में मुझे स्टंपिंग है:NSApplication endSheet: कोई प्रभाव नहीं

मैं

-(IBAction) login: (id) sender { 
[NSApp beginSheet:loginWindow 
    modalForWindow:window 
    modalDelegate:nil 
    didEndSelector:nil 
     contextInfo:nil]; 
} 

के रूप में एक खिड़की पर एक मॉडल शीट बना सकते हैं और इसके साथ दूर करने की कोशिश

-(IBAction) loginWindowCancelPressed: (id) sender { 
debugLog(@"cancel"); 
[NSApp endSheet:loginWindow]; 
} 

लेकिन यह बनी हुई है।

मैंने आईबी कनेक्शन जैसी सभी स्पष्ट चीजों की जांच की है और यह सुनिश्चित करना है कि विंडो और लॉगिनविंडो मौजूद हैं और सामान्य स्थिति में हैं।

तो, सवाल यह है: क्या मुझे कुछ याद आ रही है?

उत्तर

19

आपको शीट के लिए एक प्रतिनिधि स्थापित करना होगा। प्रतिनिधि निम्नलिखित की तरह एक हस्ताक्षर के साथ एक विधि को लागू करना चाहिए:

- (void)didEndSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo; 

(आप एक अलग नाम है, तो आप की तरह उपयोग कर सकते हैं, लेकिन यह एक ही मानकों को स्वीकार करना चाहिए।)

आप क्या कर सकते हैं जो कुछ भी आप की जरूरत है उस विधि में क्या करना है, लेकिन अंततः यह के साथ खत्म करना चाहिए:

[sheet orderOut:self]; 

जो चादर खारिज करेगा।

+0

और ऐसा ही है। धन्यवाद! – tomwhipple

+2

आपको वास्तव में एक प्रतिनिधि की आवश्यकता नहीं है (यह वैकल्पिक है)। लापता एकमात्र चीज ऑर्डर करने के लिए कॉल है: – Nik

+1

मैंने एक प्रतिनिधि और चयनकर्ता स्थापित किया है। शीट को एक विंडो नियंत्रक द्वारा नियंत्रित किया जाता है। एंडशीट को कॉल करना: इसका कोई प्रभाव नहीं है (प्रतिनिधि को कभी सूचित नहीं किया जाता है)। कॉलिंग स्टॉप मॉडल काम करता है, लेकिन यह गलत है और आगे की चादरें प्रदर्शित करते समय समस्याएं पैदा करता है। WTF? डेस्कटॉप के लिए कोको वास्तव में बड़ा समय बेकार है। 90% समय इन idiosyncracies से निपटने में बिताया ... –

3

देखें: Creating a Modal Dialog or Window in Cocoa Objective-c?

एक प्रतिनिधि की आवश्यकता नहीं है। मेरे लिए निम्नलिखित कार्य करता है और इसे बाद में कॉल करने की अनुमति देता है:

[NSApp endSheet: loginWindow]; 
[loginWindow orderOut:self]; 
+0

शुद्ध सादगी के लिए, यह एक उपयोगी समाधान है। ओएसएक्स के लिए नई स्टोरीबोर्ड सिस्टम के साथ भी काम करता है। –

संबंधित मुद्दे