UIAlertView не отвечает на UIAlertViewDelegate - PullRequest
2 голосов
/ 05 февраля 2011

Я использую логотипы для iPhone (дополнения MobileSubstrate) с файлом .h для моего

@interface MyClass : NSObject <UIAlertViewDelegate>

и

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

находится в .m, но ничего не работает, при нажатии кнопок на предупреждении он не вызывает то, что я установил для каждого buttonIndex.

Спасибо.

Редактировать: Вот что у меня есть;

#import "Tweak.h"

%hook ASApplicationPageHeaderView

- (void)_showPurchaseConfirmation {
    UIAlertView *alert = [[UIAlertView alloc] init];
    [alert setTitle:@"title"];
    [alert setMessage:@"message"];
    [alert setDelegate:self];
    [alert addButtonWithTitle:@"button 1"];
    [alert addButtonWithTitle:@"continue"];
    [alert show];
    [alert release];
}

- (void)alertView:(UIAlertView *)alert clickedButtonAtIndex:(NSInteger)buttonIndex {    
    if (buttonIndex == 0) {  //also tried (UIAlertView *)alertView
        UIAlertView *lol = [[UIAlertView alloc] init];
        [lol setTitle:@"button 1"];
        [lol setMessage:@"button 1"];
        [lol setDelegate:self];
        [lol addButtonWithTitle:@"lol"];
        [lol show];
        [lol release];
    } else {
        %orig;
    }
}

%end

Ответы [ 3 ]

4 голосов
/ 05 февраля 2011

Скорее всего, в какой-то момент вам нужно будет зарегистрировать свой класс в качестве делегата, используя что-то вроде:

 [yourAlertViewObject setDelegate:self];

Как указано в справке по протоколу UIAlertViewDelegate документы (выделено мной):

Если вы добавите свои собственные кнопки или настроить поведение оповещения просматривать, реализовывать делегата в соответствии к этому протоколу для обработки соответствующие сообщения делегата. Использование свойство делегата представления предупреждений указать одну из ваших заявок объекты в качестве делегата.

1 голос
/ 01 апреля 2013

Вам просто нужно поставить %new перед alertView делегатом:

 %new
 -(void) alertView:...
1 голос
/ 05 февраля 2011

Определите ваше оповещение в этом классе и объявите делегата оповещения о себе, надеясь, что он начнет работать с вами

...