سؤال

أحتاج إلى إحضار nsalert بناءً على استجابة nsalert أخرى. ومع ذلك ، عندما أحاول أن أسميها من Didendselector من أول واحد ، تحدث جميع أنواع الأشياء السيئة (مثل اختفاء نافذة المستند الخاصة بي وتحذيرات حول طلب المشكلات الطباعة إلى وحدة التحكم).

أي أفكار؟

هل كانت مفيدة؟

المحلول

ما تحاول القيام به هو "سلسلة" التنبيهات.

للقيام بذلك ، تحتاج إلى الاتصال orderOut: على نافذة التنبيه.

ها هي الوثائق:

إذا كنت ترغب في رفض الورقة من داخل طريقة AlertDidendSelector قبل أن يقوم المندوب المشروط بإجراء إجراء استجابةً لقيمة الإرجاع ، فأرسل Orderout: (Nswindow) إلى كائن النافذة الذي تم الحصول عليه عن طريق إرسال نافذة إلى وسيطة التنبيه. يتيح لك ذلك سلسلة صفائح ، على سبيل المثال ، عن طريق رفض ورقة واحدة قبل إظهار التالي من داخل طريقة AlertDidendselector. لاحظ أنه يجب أن تكون حريصًا على عدم الاتصال بـ Orderout: على الورقة من مكان آخر في البرنامج قبل أن يتم استدعاء طريقة AlertDidendSelector.

نصائح أخرى

هناك طريقة أسهل ، ما عليك سوى التحقق من محتويات [runModal] في بيان if:

//setup the dialog
NSAlert *networkErrorDialog = [NSAlert alertWithMessageText:@"Couldn't connect to the server" defaultButton:@"Network Diagnostics" alternateButton:@"Quit" otherButton:nil informativeTextWithFormat:@"Check that your computer is connected to the internet and make sure you aren't using a proxy server or parental controls"];

//show the dialog inside an IF, 0=the first button 1=the 2nd button etc
                if ([networkErrorDialog runModal]==0) {
                    //quit
                    [[NSApplication sharedApplication] terminate:self];
                } else {
                    //Network Diagnostics
                    [[NSWorkspace sharedWorkspace] launchApplication:@"Network Diagnostics"];
                    [[NSApplication sharedApplication] terminate:self];
                }

امل ان يساعد

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top