2012-01-26 10 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:メソッドは、-1の代わりにNSNotFoundを返します。

含まれているビューのサブクラスの場合は表示されません。特にNSTableViewCellを扱っている場合。

+0

これは私の見落としになりました。とにかく、NSLog(@ "%i"、[self.superview.subviews indexOfObject:self])を介して常に '2147483647'をゲットしています。 – Jacksonkr

+0

おそらく== NSNotFound、詳細が必要です:使用中のクラス、デバッガに入り、何が起こっているか見る時間 – bshirley

関連する問題