UIAlertView没有响应UIAlertViewDelegate

时间:2011-02-05 14:58:21

标签: iphone objective-c uialertview logos

我正在使用iPhone的徽标(MobileSubstrate插件),我的<。p> .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 个答案:

答案 0 :(得分:4)

你很可能需要在某些时候使用以下内容注册你的班级作为代表:

 [yourAlertViewObject setDelegate:self];

正如UIAlertViewDelegate Protocol Reference文档所说(强调我的):

  

如果您添加自己的按钮或   自定义警报的行为   查看,实现符合的委托   到这个协议来处理   相应的委托消息。 使用   警报视图的委托属性   指定您的一个应用程序   对象作为代表。

答案 1 :(得分:1)

在该课程中定义警报并声明警报代表自己希望它开始为您服务

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert View "
                      " 
                                                message:@"Would you like to do something?"
                                               delegate:self 
                                      cancelButtonTitle:@"Cancel"
                                      otherButtonTitles:@"Button1", @"Button2", nil];
[alert show];
[alert release];

答案 2 :(得分:1)

您只需将%new放在alertView代表前面:

 %new
 -(void) alertView:...