различные виды предупреждений и viewcontroller
В одном и том же контроллере вида я должен показывать различные оповещения с различными действиями, вызванными кнопками оповещения (этот контроллер вида является делегатом оповещений).
Есть ли способ повторно использовать код предупреждения init / show/release, учитывая, что в
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
Мне нужно, чтобы сигналы тревоги были различимы.
3 ответа:
Можно определить набор констант для представления каждого типа представления предупреждений, которым вы управляете. Например:
enum { MyFirstTypeOfWarning, MySecondTypeOfWarning }; typedef NSInteger SPAlertViewIdentifier;
Затем, когда вам понадобится представить UIAlertView, вызовите метод, который обертывает код init / show show и устанавливает тег UIAlertView:
- (void)initializeAndPresentUIAlertViewForWarningType:(SPAlertViewIdentifier)tag { // Standard alloc/init stuff [alertView setTag:tag]; [alertView show]; }
Затем в alertView: clickedButtonAtIndex: вы можете проверить тег переданного вида оповещения и ответить соответствующим образом.
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { if ([alertView tag] == MyFirstTypeOfWarning) { // Process button index for first type of alert. } ... }
Вы можете получить вид оповещения здесь сам
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { if([alertView isEqualTo:yourAlertView]) // you can try isEqual: { //Do something } //Another option is set tags to alertviews and check these tags // if(alertView.tag == yourAlertView.tag) //{ //Do something //} }