سؤال

وأنا أكتب قطعة من التعليمات البرمجية إلى "لا شيء ما،> عرض alert1-> افعل شيء ما،> عرض alert2".


    //do something
    UIAlertView *alert = [[UIAlertView alloc] 
                          initWithTitle:@"Alert 1" 
                          message:nil 
                          delegate:nil 
                          cancelButtonTitle:@"OK" 
                          otherButtonTitles:nil];
    [alert show];
    [alert release];
    //do something  
    UIAlertView *alert2 = [[UIAlertView alloc] 
                           initWithTitle:@"Alert 2" 
                           message:nil 
                           delegate:nil 
                           cancelButtonTitle:@"OK" 
                           otherButtonTitles:nil];
    [alert2 show];
    [alert2 release];

وفجأة حدث شيء غريب لAlertViews متعددة: ويظهر "تنبيه 1" -> "تنبيه 2" (اضغط على "موافق") -> "تنبيه 1". لماذا "تنبيه 1" يظهر مرة أخرى؟ أنا لم أكتب أي طريقة مندوب حتى الان. ربما الخلل؟ (شكرا لcobbal، alert1 لا يزال هناك عندما يظهر alert2).

وأجد - (الفراغ) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) buttonIndex يعمل بشكل جيد. هو الأسلوب مندوب وسيلة مشتركة لإظهار alertViews متعددة؟

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

المحلول

واعتقد ان هذا التنبيه 1 يظهر ومن ثم عن طريق تنبيه 2 مغطاة منذ عرض لا مشروط. عند إغلاق تنبيه 2، في حالة تأهب 1 لا يزال مفتوحا.

لسؤالك الثاني، alertView:didDismissWithButtonIndex: قد تعمل على نحو أفضل، ولكن أنا لم تختبر فعلا ذلك.

نصائح أخرى

والمندوب هو بحيث يمكن أن يتم إعلامك عندما يتم رفض في حالة تأهب، والزر الذي تم استخدامه لصرف النظر عنها. لا يؤثر ما إذا كان رفض التنبيه على الإطلاق.

وسوف تظل في حالة تأهب مرئية حتى يتم رفض ذلك إما عن طريق التنصت لك زر واحدة. (إن وجدت - لا يطلب منهم) أو استدعاء إما [UIAlertView dismissWithClickedButtonIndex:animated] أو (غير موثق) طريقة dismiss مثيل في حالة تأهب

ويبدو (كما اقترح Cobbal)، في حالة تأهب 2 وظهرت على التنبيه 1، يمكنك استبعاد في حالة تأهب 2، وتنبيه 1 لا يزال هناك (حتى يتم صرف النظر عنه نفسه).

هل هناك سبب معين كنت تريد أن تظهر تنبيه جديد بينما آخر لا يزال يظهر؟ ربما بعض سياق المزيد من شأنها أن تساعدنا على الوصول إلى جذور هذه المسألة، التي أظن قد يكون مسألة التصميم.

[عدل] العودة إلى هذا والقراءة مرة أخرى، وأنا أتساءل عما إذا كان ما كنت تسأل عن مع أسلوب مندوب هو ما إذا كان يجب أن تظهر في حالة تأهب 2 من هناك؟ وفي هذه الحالة ربما كان هذا ما تريد - سواء بشكل مباشر أو غير مباشر. بواسطة بشكل غير مباشر يعني أنه قد تضطر بعض الدول وضع في مكان آخر أن يحدد ما إذا كان ينبغي أن تظهر في حالة تأهب 2 (أو الظروف التي تؤدي إلى ذلك). تلك الدولة (العلم، ربما) يمكن تعيين عند عرض التنبيه الأول، وتطهيرها عند رفض التنبيه (من الأسلوب مندوب).

والسبب يحدث هذا لأن UIAlertView لا يمنع في حين انها تظهر. أي قانون مكتوب بعد مبديا alertview سيتم تشغيل مباشرة بعد يظهر التنبيه.

وماذا يجب أن يكون هو طريقتين مختلفتين. يظهر واحد أن يفعل شيئا ثم تنبيه، ثم آخر أن يفعل شيئا ويظهر تنبيه آخر.

وركلة قبالة الطريقة الأولى أن تفعل شيئا وإظهار تنبيه، ومن ثم ربط في طريقة مندوب التنبيه، وعندما تحصل على رد من alertview، قم بتشغيل طريقة أخرى.

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

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