2010-03-29 35 views
6

Tôi đã tạo ra một cái nhìn tỉnh táo với hai nút bằng cách sử dụng đoạn mã sau:Các đại biểu phương pháp "clickedButtonAtIndex:" không được gọi

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

Tôi muốn chạy một số mã khi một trong các nút được nhấp. Để làm như vậy, tôi đã thêm các phương pháp sau vào tập tin delegate.m:

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

Nhưng phương pháp này không được gọi khi tôi nhấn một trong các nút! Ai đó có thể cho tôi biết lý do không?

Cảm ơn trước,

Sagiftw

Trả lời

39
delegate:nil 

chế độ xem cảnh báo sẽ liên kết đại biểu như thế nào nếu bạn chỉ định sẽ không có đại biểu? Thay thế phần đó bằng số điện thoại

delegate:self 

thay thế.

+0

Cảm ơn sự giúp đỡ! Tôi đã quên điều đó!!! =) – Sagiftw

+0

Thanx tôi cũng quên điều đó. – iBapu

3

Hãy thử thiết lập các đại biểu để tự thay vì con số không.

0

trong .h đặt UIActionSheetDelegate và trong .m trong khi tạo ra một alertView đưa các đại biểu để tự không nil như đang được thực hiện trong trường hợp trên

2

Tôi đã gọi UIAlertView của dismissWithClickedButtonIndex: hoạt hình: phương pháp từ phương pháp đại biểu UITextField vì tôi muốn để xử lý phím Enter bàn phím cũng như:

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

Bằng cách này phương pháp alertView: clickedButtonAtIndex: không bao giờ được gọi là thậm chí nếu bạn đã thiết lập đại biểu thích hợp. Thay vào đó, cảnh báo Xem: didDismissWithButtonIndex: không được gọi. Vì vậy, thực hiện phương pháp này thay vì:

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

Nếu bạn chỉ muốn để xử lý các nút cảnh báo quan điểm của chỉ, những clickedButtonAtIndex cuộc gọi đầu tiên và sau đó didDismissWithButtonIndex.

0

Câu trả lời đúng cho câu hỏi này là delegate:nil. Nhưng trong trường hợp đại biểu đã được đặt thành tự, và clickedButtonAtIndex vẫn không hoạt động, hãy thử kiểm tra xem bạn có đang xuất hiện một trình điều khiển chế độ xem khác ([self.navigationController popViewControllerAnimated:YES];) sau khi hiển thị cảnh báo hay không. Điều này cũng có thể dẫn đến clickedButtonAtIndex không được gọi. Đây là những gì xảy ra với tôi.

Hy vọng điều này sẽ giúp ai đó.

Các vấn đề liên quan