2017-02-11 35 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 
相關問題