2017-02-11 34 views
0

我有一个静态无效,创建一个按钮与一个动作,我希望该动作也是一个静态的空白,但当我尝试使包时,我得到一个错误。IBAction作为静态void在theos

代码:

typedef enum { 
    SBIconLocationHomeScreen = 0, 
    SBIconLocationDock  = 1, 
    SBIconLocationSwithcer = 2 
} SBIconLocation; 

static UIButton *okbtn; 

@interface SBApplicationIcon 
- (void)launchFromLocation:(SBIconLocation)location context:(id)arg2; 
@end 

static void AddBtn() 
{ 
    UIWindow *window = [[UIApplication sharedApplication] keyWindow]; 

    okbtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [okbtn addTarget:window action:@selector(checkpw:) forControlEvents:UIControlEventTouchUpInside]; 
    [okbtn setTitle:@"Done" forState:UIControlStateNormal]; 
    [okbtn setTitleColor:[UIColor greenColor] forState:UIControlStateNormal]; 
    okbtn.frame = CGRectMake(0, 0, 160, 40); 
    okbtn.translatesAutoresizingMaskIntoConstraints = NO; 
    [UIView transitionWithView:window duration:0.4 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{ 
     [window addSubview:okbtn]; 
    } completion:nil]; 
    [window addConstraints:[NSLayoutConstraint 
          constraintsWithVisualFormat:@"V:|-255-[okbtn(40)]" 
          options:NSLayoutFormatDirectionLeadingToTrailing 
          metrics:nil 
          views:NSDictionaryOfVariableBindings(okbtn)]]; 
    [window addConstraints:[NSLayoutConstraint 
          constraintsWithVisualFormat:@"H:[okbtn(160)]" 
          options:0 
          metrics:nil 
          views:NSDictionaryOfVariableBindings(okbtn)]]; 
    [window addConstraint:[NSLayoutConstraint 
          constraintWithItem:okbtn attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:window attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0]]; 
} 

static void checkpw() 
{ 
    //Something 
} 

%hook SBApplicationIcon 
- (void)launchFromLocation:(SBIconLocation)location context:(id)arg2 
{ 
    AddBtn(); 
} 
%end 

错误:

Tweak.xm:43:13: error: unused function 'checkpw' [-Werror,-Wunused-function] 
static void checkpw() 

我怎样才能解决呢?

+3

请包括错误,以及在现场您的问题实际的代码,不要链接到外部网站的必要内容。 – luk2302

回答

0

问题是这些代码两个部分:

[okbtn addTarget:window action:@selector(checkpw:) forControlEvents:UIControlEventTouchUpInside]; 

// … 

static void checkpw() 
{ 
    //Something 
} 

您使用的是普通老式C法的选择。选择器只能使用Objective-C方法;你需要创建一个Objective-C类,并添加方法吧:

[okbtn addTarget:[[PasswordChecker alloc] init] action:@selector(checkpw:) forControlEvents:UIControlEventTouchUpInside]; 

// … 

@implementation PasswordChecker 
- (void)checkpw:(NSString *)password { 
    // Something 
} 
@end 
相关问题