代码之家  ›  专栏  ›  技术社区  ›  Chris

有没有方法将-(uiview*)viewwithtag:(nsinteger)标记与自定义uiview一起使用?

  •  1
  • Chris  · 技术社区  · 16 年前

    我有一个从uiview继承的类

    但是,当尝试使用以下内容时 (UIView *)viewWithTag:(NSInteger)tag 我收到警告:*不兼容的object-c类型正在初始化“struct uiview*”,应为“struct customview”

    现在,我已经创建了一个返回自定义视图的自定义方法,该方法使用for循环with view.subview,因为我要查找的视图来自同一个超级视图。我做了一个条件检查,如果标签匹配我正在搜索的,然后我返回视图。

    我想我只是想知道是否有更好的做法?

    谢谢

    1 回复  |  直到 16 年前
        1
  •  8
  •   Dave DeLong    16 年前

    你可能在做:

    CustomView * aView = [someView viewWithTag:42];
    

    viewWithTag: 返回A UIView 不是 CustomView . 有两种方法可以解决这个问题:

    1. 铸造。如果你确信你只会得到 定制视图 通过这样做,您可以做到:

      CustomView * aView = (CustomView *)[someView viewWithTag:42];
    2. 反思。如果不确定是否要获取自定义视图,请将其分配到 UView 参考并稍后决定如何处理:

      UIView * aView = [someView viewWithTag:42];
      if ([aView isKindOfClass:[CustomView class]]) {
        CustomView * customView = (CustomView *)aView;
      }