различные виды предупреждений и viewcontroller


В одном и том же контроллере вида я должен показывать различные оповещения с различными действиями, вызванными кнопками оповещения (этот контроллер вида является делегатом оповещений).

Есть ли способ повторно использовать код предупреждения init / show/release, учитывая, что в

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

Мне нужно, чтобы сигналы тревоги были различимы.

3 2

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
//}
    }

Именно то, что было заявлено 7KV7. Вам нужно пометить представление предупреждений и проверить в обработчике событий, что такое тег отправителя. Таким образом, вы можете создавать различные действия для различных представлений предупреждений в одном и том же eventhandler (clickedButtonAtIndex).