2010-03-29 25 views
6

मैं निम्नलिखित कोड का उपयोग कर दो बटन के साथ एक चेतावनी दृश्य बनाया है:प्रतिनिधि विधि "clickedButtonAtIndex:" नहीं कहा जाता है

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 
} 

लेकिन इस विधि कहा जाता है नहीं है जब मैं बटन के दोनों प्रेस! क्या कोई मुझे बता सकता है क्यों?

अग्रिम धन्यवाद,

Sagiftw

उत्तर

39
delegate:nil 

अगर आपने निर्दिष्ट किया कि कोई प्रतिनिधि नहीं होगा तो अलर्ट व्यू एक प्रतिनिधि को कैसे संबद्ध करेगा?

delegate:self 

के साथ उस भाग को बदलें।

+0

सहायता के लिए धन्यवाद! मैं वह भूल गया!!! =) – Sagiftw

+0

Thanx मैं भी भूल गया था। – iBapu

3

बजाय स्वयं नहीं के बराबर करने के लिए प्रतिनिधि सेट करके देखें।

0
ज में

UIActionSheetDelegate रख दिया और मीटर में जबकि बनाने एक alertView आत्म करने के लिए प्रतिनिधि नहीं डाल उपरोक्त मामले

2

मैं UIAlertView के dismissWithClickedButtonIndex बुला रहा था में किया जा रहा के रूप में नहीं के बराबर: एनिमेटेड: UITextField प्रतिनिधि विधि से विधि

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

इस तरह विधि alertView: clickedButtonAtIndex: कहा जाता हो जाता है कभी नहीं, भले ही आप उचित प्रतिनिधि की स्थापना की, क्योंकि मैं भी कीबोर्ड वापस कुंजी को संभालने के लिए चाहता था। इसके बजाय अलर्ट व्यू: didDismissWithButtonIndex: कॉल किया जाता है। तो इस विधि के बजाय लागू:

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

तुम सिर्फ चेतावनी दृश्य के बटन केवल, उन पहली कॉल clickedButtonAtIndex और फिर didDismissWithButtonIndex को संभालने के लिए चाहते हैं।

0

इस प्रश्न का सही उत्तर delegate:nil है। लेकिन अगर प्रतिनिधि पहले से ही स्वयं पर सेट हो चुका है, और clickedButtonAtIndex अभी भी काम नहीं कर रहा है, तो यह जांचने का प्रयास करें कि क्या आप अलर्टव्यू दिखाए जाने के बाद कोई अन्य व्यू कंट्रोलर ([self.navigationController popViewControllerAnimated:YES];) पॉप अप कर रहे हैं या नहीं। यह clickedButtonAtIndex भी नहीं कहा जा सकता है। मेरा साथ ऐसा ही हुआ था।

उम्मीद है कि यह किसी की मदद करेगा।

संबंधित मुद्दे