注意:此代码不是原始代码的精确副本,但说明(准确性很高)问题是什么,以及我对代码的意图是什么。
我在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
但UIButton
的{{1}}(action:
)实际上来自另一个类:
dismissWithAnimation:YES:nil
当UIButton位于%hook DaClass2
-(void)dismissWithAnimation:(int) reason:(int) {
//someCodeHere...
}
%end
时,如何通过dismissWithAnimation
的{{1}} DaClass2
致电UIButton
?
答案 0 :(得分:2)
您可以在%new
中设置dismissWithAnimation
来调用DaClass2
的功能。
%hook DaClass1
//Your Code...
%new
-(void)dismissIt {
[[%c(DaClass2) sharedInstance] dismissWithAnimation:YES:nil];
}
%end
并将xButton
的{{1}}设置为“action:
”:
dismissIt
答案 1 :(得分:1)
你的意思是@selector(dismissWithAnimation:YES:nil)方法在DaClass2类中吗?
然后做:
[xButton addTarget:(instance of DaClass2) action:@selector(dismissWithAnimation:YES:nil) forControlEvents:UIControlEventTouchUpInside];