2013-03-08 52 views
2

注:此代碼是不是原始代碼的翻版,但足以說明(具有良好的精度)是什麼問題,我的代碼的意圖是什麼。調用從另一個類的功能與標誌​​(%鉤)

我添加了一個按鈕,DaClass1的看法(這工作得很好):

%hook DaClass1 

-(id)DaView { 
    UIButton *xButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [xButton addTarget:self action:@selector(dismissWithAnimation:YES:nil) 
     forControlEvents:UIControlEventTouchUpInside]; 
    [xButton setBackgroundImage:[UIImage imageWithContentsOfFile:@"/Hello.png"] forState:UIControlStateNormal]; 
    xButton.frame = CGRectMake(0, 0, 30, 30); 
    [self addSubview:xButton]; 
    return %orig; 
} 

%end 

UIButtonaction:dismissWithAnimation:YES:nil)實際上是從另一個類:

%hook DaClass2 
    -(void)dismissWithAnimation:(int) reason:(int) { 
     //someCodeHere... 
    } 
%end 

我怎麼可以叫dismissWithAnimationDaClass2從我UIButtonaction:當UIButton的是DaClass1

回答

2

,您可以撥打%new函數調用DaClass2dismissWithAnimation

%hook DaClass1 

//Your Code... 

%new 

-(void)dismissIt { 
    [[%c(DaClass2) sharedInstance] dismissWithAnimation:YES:nil]; 
} 

%end 

,並設置xButtonaction:爲 「dismissIt」:

[xButton addTarget:self action:@selector(dismissIt) forControlEvents:UIControlEventTouchUpInside]; 
1

你的意思是,@selector(dismissWithAnimation:是:無)方法是在類DaClass2?

然後做:

[xButton addTarget:(instance of DaClass2) action:@selector(dismissWithAnimation:YES:nil) forControlEvents:UIControlEventTouchUpInside]; 
+0

它是DaClass2的一個實例,除非它是一個類的方法。 – HackyStack 2013-03-08 21:45:06

+0

還是堅持DaClass2的一個實例的引用,聲明局部按鈕按下處理方法,在這種方法中,調用DaClass2對象的dismissWithAnimation方法。 – HackyStack 2013-03-08 21:48:22