cocoa - وقف مشروط عند إغلاق النافذة(الكاكاو)




modal-dialog nswindow (2)

أنا حاليا عرض نافذة مشروط باستخدام هذا الرمز:

[[NSApplication sharedApplication] runModalForWindow:mainWindow];

ومع ذلك، عندما أغلق هذه النافذة، النوافذ الأخرى لا تزال غير نشطة. كيف يمكنني تشغيل الأسلوب stopModal عند إغلاق الإطار باستخدام "x الأحمر"؟

شكرا لكم،

ميخائيل


إذا كان لديك مربع حوار ينطبق على نافذة معينة، فربما يجب ألا تستخدم مربع حوار مشروط ولكن ورقة. وينبغي تجنب الحوارات مشروط إذا أمكن. إذا كنت تستخدم ورقة فإن المشكلة التي تواجهها لن تكون مشكلة.

- (void)showSheet:(id)sender
{
    [NSApp beginSheet:yourModalWindow 
        modalForWindow:windowThatSheetIsAttachedTo
        modalDelegate:self
        didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:) 
           contextInfo:nil];
}

- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo
{
    [sheet orderOut:self];
    [NSApp endSheet:sheet];
}

يمكنك إنشاء مفوض للنافذة ويكون الرد على إما
- (باطل) وينويلوس: إعلام (نسنوتيفيكاتيون *) أو
- (باطلة) ويندوشولدكلوس: (نسنوتيفيكاتيون *) طرق الإعلام مثل ذلك:

- (void)windowWillClose:(NSNotification *)notification {
   [[NSApplication sharedApplication] stopModal];
}

راجع مركز ماك ديف: مرجع بروتوكول نسويندوديليغات







nswindow