لم يتم استدعاء أسلوب التفويض "clickedButtonAtIndex:".
-
22-09-2019 - |
سؤال
لقد قمت بإنشاء عرض تنبيه باستخدام زرين باستخدام الكود التالي:
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
لا يتم استدعاؤها. هذا ما حدث لي.
أمل أن هذا يساعد شخصاما.