2011-04-14 66 views
18

我使用加載視圖從筆尖文件:UIScrollView的幻象子視圖

NSArray *nibViews = [[NSBundle mainBundle] loadNibNamed:@"AnalysisView" owner:self options:nil]; 
AnalysisView *gridView = [nibViews objectAtIndex: 0]; 

筆尖包含一個名爲gridScrollView滾動視圖,並在AnalysisView實現文件我有補充意見子視圖滾動視圖的方法:

for (NSInteger i = [results count] -1; i >= 0; i--) 
{ 
    Result *result = [results objectAtIndex:i]; 
    [self loadResult: result]; 
} 

- (void) loadResult: (Result *) result 
{ 
    NSArray *nibViews = [[NSBundle mainBundle] loadNibNamed:@"GridView" owner:self options:nil]; 
    GridView *gridView = [nibViews objectAtIndex: 0]; 
    gridView.tag = self.graphCount; 

    CGRect gridFrame = gridView.frame; 

    CGFloat yOffset = gridFrame.size.height * self.graphCount; 
    gridView.frame = CGRectMake(0, yOffset, gridFrame.size.width, gridFrame.size.height); 

    [self.gridScrollView addSubview: gridView]; 
    self.gridScrollView.contentSize = CGSizeMake(self.gridScrollView.frame.size.width, (yOffset + gridFrame.size.height)); 

    self.graphCount++; 
} 

我已經設置了scrollviews代表是AnalysisView並迷上了做到底decelaring方法

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{ 
     NSLog(@"%d", [scrollView.subviews count]); 
} 

當scrollViewDidEndDecelerating方法觸發時,它報告子視圖的數量是5.這些子視圖中有3個是我期望的GridViews。然而,有2個UIImageViews,我不知道他們爲什麼在那裏。

這是一個問題,因爲我打算在scrollViewDidEndDecelerating方法中使用viewWithTag檢索視圖,並在視圖上調用一個方法,但每當我嘗試使用標記0檢索視圖時,我都會檢索其中一個UIImageView,這會導致我的應用程序崩潰,因爲無法在圖像視圖上調用該方法。

我知道一個方法是將我的GridViews存儲在一個單獨的實例數組中,並從那裏引用它們。但我很想知道2個UIImageView是什麼,以及他們是如何到達那裏的。

回答

41

UIScrollView默認情況下包含2個UIImageViews作爲滾動指標的子視圖。雖然我不能找到具體的有關文檔滾動指標實現什麼,那些imageviews存在於類的聲明(見UIScrollView.h頭):

UIKIT_CLASS_AVAILABLE(2_0) @interface UIScrollView : UIView <NSCoding> { 
    ... 
    UIImageView* _verticalScrollIndicator; 
    UIImageView* _horizontalScrollIndicator; 

您也可以從0開始分配標籤,而是來自一些正數 - 這樣避免與標準子視圖衝突

+0

謝謝 - 你知道我在哪裏可以找到有關此文檔的任何信息嗎? – JFoulkes 2011-04-14 13:58:37

+0

我沒有嘗試在代碼中創建一個UIScrollView並檢查它的子視圖數量,但它是零。我只能猜測它不會添加子視圖,直到它在屏幕上繪製 – JFoulkes 2011-04-14 14:14:35

+5

可能是+嘗試使用showsHorizo​​ntal/VerticalScrollIndicator屬性 - 如果我沒有記錯正確設置它爲NO有效地從scrollview中刪除指標(但我可能在這裏是錯誤的) – Vladimir 2011-04-14 14:16:56