2010-08-14 97 views
1

嘗試使用遵循(UIView *)viewWithTag:(NSInteger)tag我得到警告,當我有一個從UIView的是否有使用方式 - (UIView的*)viewWithTag:(NSInteger的)標籤與自定義的UIView

繼承

然而一類:*不兼容的Objective-C類型初始化「結構的UIView *」,預期「結構CustomView

現在我已返回我的自定義視圖自定義的方法,該方法使用一個for循環以來的觀點view.subviews我正在尋找來自同一個超級觀點。我做了一個條件檢查,如果標籤匹配我正在尋找的那個,然後我返回視圖。

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

感謝

回答

8

你可能會做:

CustomView * aView = [someView viewWithTag:42]; 

viewWithTag:返回UIView,而不是一個CustomView。有幾種方法可以解決這個問題:

  1. 鑄造。如果你是絕對相信你會永遠只能做這個拿到CustomView,那麼你可以做:

    CustomView * aView = (CustomView *)[someView viewWithTag:42];
  2. 反思。如果你不知道你會得到一個自定義視圖,然後將其指定爲UView參考,然後再決定如何處理它做的事:

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

感謝,這是工作。我知道它會一直返回自定義類,但是附加位可能會有所幫助 – Chris 2010-08-14 19:21:05