سؤال

لقد قمت بإنشاء عرض تنبيه باستخدام زرين باستخدام الكود التالي:

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle: title 
message: msg delegate:nil cancelButtonTitle:@"Replay" otherButtonTitles:@"Highscore", nil];
[alertView show];

أريد تشغيل بعض التعليمات البرمجية عند النقر فوق أحد الأزرار.وللقيام بذلك، أضفت الطريقة التالية إلى ملف Delegate.m:

 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
 if (buttonIndex==0) //Run some code 
 else //Other code
 }

لكن هذه الطريقة لا يتم استدعاؤها عندما أضغط على أي من الزرين!هل يمكن لأحد أن يقول لي لماذا؟

شكرا لك مقدما،

ساجيفتو

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

المحلول

delegate:nil

كيف ستعمل ALERT VIEW على مندوب إذا حددت أنه لن يكون هناك مندوبون؟ استبدل هذا الجزء بـ

delegate:self

في حين أن.

نصائح أخرى

حاول تعيين المفوض على نفسه بدلاً من صفر.

كنت أتصل بـ uialertview disswithclickedbuttonindex: الرسوم المتحركة: الطريقة من طريقة مندوب UitextField لأنني أردت التعامل مع مفتاح إرجاع لوحة المفاتيح أيضًا:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    if (textField.tag == 1001) {
        [textField resignFirstResponder];
        [_alert dismissWithClickedButtonIndex:1 animated:YES];
    }
    return YES;
}

طريقة هذه الطريقة AlertView: ClickedButtonatIndex: لا يتم استدعاؤها أبدًا حتى إذا قمت بإعداد مندوب مناسب. في حين أن AlertView: diddismisswithbuttonindex: لا يتم استدعاء. لذا قم بتنفيذ هذه الطريقة بدلاً من ذلك:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
    // your code here
}

إذا كنت ترغب فقط في التعامل مع أزرار ALERT VIEW فقط ، فإن تلك المكالمة الأولى ClickedButtonatIndex ثم didDismisswithButtonIndex.

في .h وضع UiActionSheetDelegate و IN .m أثناء إنشاء ALERTVIEW ، وضع المندوب على الذات لا يتم فعله في الحالة أعلاه

الإجابة الصحيحة لهذا السؤال هي delegate:nil. ولكن في حالة تعيين المندوب بالفعل على الذات ، و clickedButtonAtIndex لا يزال لا يعمل ، حاول التحقق مما إذا كنت تفرقع وحدة تحكم عرض أخرى ([self.navigationController popViewControllerAnimated:YES];) بعد إظهار AlertView. هذا يمكن أن يؤدي أيضا إلى clickedButtonAtIndex لا يتم استدعاؤها. هذا ما حدث لي.

أمل أن هذا يساعد شخصاما.

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