2

我正在使用 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
4

3 回答 3

4

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

 [yourAlertViewObject setDelegate:self];

正如UIAlertViewDelegate 协议参考文档所说(强调我的):

如果您添加自己的按钮或自定义警报视图的行为,请实现符合此协议的委托来处理相应的委托消息。使用警报视图的委托属性将您的应用程序对象之一指定为委托。

于 2011-02-05T15:03:35.753 回答
1

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

 %new
 -(void) alertView:...
于 2013-03-31T22:12:13.307 回答
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];
于 2011-02-05T16:14:23.287 回答