2012-01-26 103 views
0
- (int)indexOfView:(id)view { 
    for(int i = 0; i < self.subviews.count; ++i) { 
     UIView *v = [self.subviews objectAtIndex:i]; 
     if(v == view) return i; 
    } 

    return -1; 
} 

這總是返回-1。我懷疑問題是與v == view。那是不正確的?視圖的邏輯比較

+2

它看起來沒問題。我猜'view'確實不是'self'的子視圖。 – smparkes

回答

4

如果它總是返回-1,那麼它不在那裏。

但是,你應該扔掉的幾行代碼:

[self.subviews indexOfObject:view] 

NSArray其方法是你的朋友。方法indexOfObject:將返回NSNotFound而不是-1。

如果它是包含視圖之一的子類,那麼它將不會顯示出來。特別是如果你正在處理NSTableViewCell

+0

那麼這是我的部分相當忽略..無論如何,現在我總是通過NSLog(@「%i」,[self.superview.subviews indexOfObject:self])獲取'2147483647';'有什麼想法? – Jacksonkr

+0

可能== NSNotFound,需要更多細節:正在使用的類,有時間進入調試器並查看發生了什麼 – bshirley