UIAlertView प्रतिनिधिमंडल - कॉलिंग विधि के लिए वापसी बटन सूचकांक

निश्चित नहीं है कि मैंने उस प्रश्न को सही तरीके से कहा है। क्या UIAlertView में चयनित बटन इंडेक्स को उस विधि पर लौटाया गया है जहां UIAlertView शुरू किया गया था?

इसलिए

- (void) इसलिएmeMethod { 

UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Confirm Adding Product" message:Blah, blah, blah" delegate:self cancelButtonTitle:nil otherButtonTitles:@"Yes", @"No", nil];
    [alert show];

//इसलिएme more code - I'd like to get the button index returned here!

}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {

   //anyway to return this to the method above?
    if (buttonIndex == 0) {
    }

}
1
एक मान को तीसरी विधि में पास करें ...
जोड़ा लेखक PruitIgoe, स्रोत
नहीं, यही कारण है कि हम एक निश्चित कार्य को किसी अन्य विधि/स्थान पर भेजने के लिए प्रतिनिधिमंडल का उपयोग करते हैं। आप someMethod के भीतर पूरा करने का प्रयास कर रहे हैं जिसे आप प्रतिनिधि विधि में नहीं कर सकते हैं?
जोड़ा लेखक Peter Foti, स्रोत

2 उत्तर

नहीं, आप उस विधि में कुछ भी "वापस नहीं" कर सकते हैं जिसने अलर्ट व्यू दिखाया है क्योंकि उस विधि ने निष्पादन समाप्त कर दिया है। यदि आप किसी विशिष्ट बटन पर कोई कार्रवाई करना चाहते हैं, तो एक नई विधि पर कॉल करें।

    if (buttonIndex == 0) {
      [myclass someNewMethod];
    }
0
जोड़ा

You can use convenient category UIAlertView+BlocksKit.h from BlocksKit

- (void) someMethod {

    [UIAlertView bk_showAlertViewWithTitle:@"Title"
                                   message:@"Message"
                         cancelButtonTitle:@"OK"
                         otherButtonTitles:nil
                                   handler:^(UIAlertView *alertView, NSInteger buttonIndex) {

                                      //Use buttonIndex in someMethod's context:
                                       NSLog(@"Pressed button at index %d", buttonIndex);

                                   }];
}
0
जोड़ा