在iOS开发写页面时,有时因为写得急,误将[self.view addSubview:view]写成self, 或因创建控件的方法抽取了所以传参的时候误写成self,然后在运行看效果的时候就会报错“unrecognized selector sent to instance 0x7f8a257535b0”
报错的原因是传的“self"未找到方法的实现,这个很明确知道是UIView的实例方法。所以可以运用重定向的方式,将方法转交给self.view去实现。具体代码如下,可在项目的baseviewcontroller里面写实现
// 重定向技术:解决项目中有时使用在controller添加subview时传入的是控制器的问题
+ (BOOL)resolveInstanceMethod:(SEL)sel
{
SEL mothod = @selector(addSubview:);
if (mothod == sel) {// 添加子view
return YES;
}
return [super resolveInstanceMethod:sel];
}
- (id)forwardingTargetForSelector:(SEL)aSelector
{
if (aSelector == @selector(addSubview:)) {
return self.view;
}
return [super forwardingTargetForSelector:aSelector];
}
完毕,谢谢!
网友评论