我有一个继承自UIView的课程
然而,在尝试使用follow (UIView *)viewWithTag:(NSInteger)tag
时,我收到警告:*不兼容的Objective-C类型初始化'struct UIView *',期望'struct CustomView '
现在我已经创建了一个返回我的自定义视图的自定义方法,该方法使用带有view.subviews的for循环,因为我要查找的视图来自同一个superview。如果标签与我正在搜索的标签匹配,我会进行条件检查,然后返回视图。
我想我只是想知道这是否有更好的做法?
由于
答案 0 :(得分:8)
你可能在做:
CustomView * aView = [someView viewWithTag:42];
viewWithTag:
会返回UIView
,而非CustomView
。有几种方法可以解决这个问题:
铸造。如果您完全确定通过这样做只会获得CustomView
,那么您可以这样做:
CustomView * aView = (CustomView *)[someView viewWithTag:42];
反射。如果您不确定是否要获得自定义视图,请将其分配到UView
引用中,稍后再决定如何处理它:
UIView * aView = [someView viewWithTag:42];
if ([aView isKindOfClass:[CustomView class]]) {
CustomView * customView = (CustomView *)aView;
}