2011-12-31 15 views
6

मेरे पास एक ट्यूटोरियल से एक कार्य कोड है लेकिन इसे पूरी तरह से समझ में नहीं आता है।आईओएस शुरुआती: 3 बटन के साथ UIAlertView विंडो> जांचें कि कौन सा बटन दबाया गया था

स्थिति:

के बाद एक बटन अपने iPhone अनुप्रयोग में दबाया गया था एक AlertView तीन बटन के साथ प्रकट होता है। अब मैं यह जांचना चाहता हूं कि उपयोगकर्ता ने कौन सा बटन दबाया था। ट्यूटोरियल से

कोड:

- (IBAction)infoButtonPressed:(id)sender { 

    UIAlertView *myAlert1 = [[UIAlertView alloc]initWithTitle:@"My Alert View 1" 
                message:@"Here we go" 
                delegate:self 
             cancelButtonTitle:@"Cancel" 
             otherButtonTitles:@"Option1", @"Option2", nil]; 

    [alert show]; 
} 





- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 
{ 
    NSLog(@"Button: %i, was pressed.", buttonIndex); 
} 

कोड काम करता है, मैं एक NSLog के रूप में कंसोल में सही उत्पादन देखते हैं लेकिन कैसे विधि है यह संभव कि:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 
{ 
    NSLog(@"Button: %i, was pressed.", buttonIndex); 
} 

को संदर्भित करता है सही चेतावनी दृश्य। इस मामले में: myAlert1।

एक से अधिक अलर्ट व्यू के बारे में क्या। उदाहरण के लिए myAlert2 को कॉल करने वाला दूसरा।

मैं जानता हूँ कि निम्नलिखित कोड सही नहीं है, लेकिन यह मुझे के लिए और अधिक समझ बनाने के अगर मैं इस प्रकार विधि लिखते हैं जाएगा:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 
{ 
    NSLog(@"Button: %i, was pressed.", buttonIndex_FROM_myAlert1); 
} 

आशा है कि आप मदद कर सकते हैं, मुझे पागल ड्राइव।

सादर, मार्क

उत्तर

8

कैसे यह संभव है कि विधि सही चेतावनी दृश्य को संदर्भित करता है?

इसी कारण से, प्रतिनिधि विधि alertView:didDismissWithButtonIndex: वास्तव में आपको बताती है कि यह कौन सा अलर्ट व्यू संदर्भित करता है। ध्यान दें कि विधि में दो तर्क हैं। दूसरा आपको बटन इंडेक्स बताता है और इस बटन इंडेक्स को अलर्ट व्यू के पहले अंक को संदर्भित करता है।

यदि आपके पास एक ही प्रतिनिधि को साझा करने वाले एक से अधिक अलर्ट व्यू हैं, तो आपको पहले तर्क के खिलाफ जांच करनी होगी जो इस बारे में चेतावनी देता है। ऐसा करने में सक्षम होने के लिए, आपको प्रतिनिधि विधि में उन्हें याद रखने के लिए एक ivar/संपत्ति या अन्य डेटा संरचना में अलर्ट दृश्यों को स्टोर करना होगा। (या, UIAlertViewUIView का उप-वर्ग है, तो आप tag संपत्ति का उपयोग एकाधिक दृश्यों के बीच अंतर करने के लिए कर सकते हैं)।

+0

धन्यवाद ओले, अब इसे मिला। गुटेन रत्स इन्स नेयू जहर! (हैप्पी न्यू इयर के लिए जर्मन) ;-) –

+0

आपके उत्तर के अतिरिक्त मुझे एक से अधिक अलर्ट व्यू के बारे में एक अच्छी पोस्ट मिली है और उन्हें + कोड कैसे अलग किया जाए। बस अन्य शुरुआती लोगों के लिए एक ही समस्या है: –

+0

http://stackoverflow.com/questions/6276819/ios-two-uialert-with-two- अलग-delegate- तरीकों –