今天写代码的时候遇到个问题记录一下,
先说需求:自定义了一个CustomView,里面添加了个button,然后在一个控制器里,添加若干个CustomView,然后点击每个CustomView里的button跳转到不同的控制器上。
问题:本来想用代理来实现,但是我只会把控制器中每个CustomView里的button都跳转到一个控制器上
本人代理学的不是很好,又由于时间紧,用了其他方法
解决:1.把CustomView的button成员变量暴露在.h文件里面,然后在控制器中使用 [CustomView.button addTarget:selfaction:@selector(ButtonClick)forControlEvents:UIControlEventTouchUpInside];
在这里就要用到在view里拿到其所在的控制器的方法了:
- (UIViewController*)viewController {
for(UIView* next = [selfsuperview]; next; next = next.superview) {
UIResponder*nextResponder = [nextnextResponder];
if([nextResponderisKindOfClass:[UIViewControllerclass]]) {
return(UIViewController*)nextResponder;
}
}
returnnil;
}