यह मत भूलना कि अगर आप इसे "मोडल" शीट के रूप में चलाने की कोशिश कर रहे हैं (यानी यह ऐप को तब तक ले जाता है जब तक उपयोगकर्ता इसे खारिज नहीं करता), आपको एक नया रन लूप धक्का देना होगा।
आपने जो किया है वह शीट दिखाया गया है, और फिर एक नया पाश नहीं धक्का दिया गया है, इसलिए ओएस केवल शीट दिखाता है, देखता है कि इसे चलाने के लिए कोई कारण नहीं है, और इस प्रकार इसे बंद कर देता है और अगले पर निष्पादन शुरू करता है रेखा:
- (id)showPanelModalAgainstWindow: (NSWindow *)window
{
[[NSApplication sharedApplication] beginSheet: panelToShow
modalForWindow: window
modalDelegate: self
didEndSelector: @selector(sheetDidEnd:returnCode:contextInfo:)
contextInfo: nil];
[[NSApplication sharedApplication] runModalForWindow: panelToShow];
if (m_returnCode == NSCancelButton) return nil;
}
- (void)sheetDidEnd:(NSWindow *)sheet
returnCode:(int)returnCode
contextInfo:(void *)contextInfo
{
UNUSED(sheet);
UNUSED(contextInfo);
m_returnCode = returnCode;
}
फिर, अपने को स्वीकार करने और/या रद्द बटन दिनचर्या में:
मैं आम तौर पर चादरें निम्नलिखित तरीके से करना
- (IBAction)continueButtonClicked:(id)sender
{
UNUSED(sender);
[[NSApplication sharedApplication] stopModal];
[createAccountWizardPanel orderOut: nil];
[[NSApplication sharedApplication] endSheet: createAccountWizardPanel
returnCode: NSOKButton];
}
मुझे यकीन है कि वहाँ के रूप में कर रहा हूँ ऐसा करने का हल्का कम कोड-वाई तरीका, लेकिन मैंने इसमें गहराई से देखा नहीं है, क्योंकि इस तरह से अब तक पूरी तरह से ठीक काम करता है ....
नियंत्रक और पैनल ऑब्जेक्ट्स के जीवनकाल के बारे में पिछली टिप्पणियां भी हैं प्रासंगिक - मॉड्यूल पैनल दिखाते समय जीवनकाल के लिए आपको किन वस्तुओं की आवश्यकता होती है, यह समझना सुनिश्चित करें।
पर स्पॉट! बहुत धन्यवाद। –