2012-01-26 3 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. Это неправильно?ios логическое сравнение просмотров

+2

Все в порядке. Я бы предположил, что 'view' действительно не является подзадачей' self'. – smparkes

ответ

4

Если он всегда возвращает -1, то его там нет.

Но вы должны выбросить несколько строк кода:

[self.subviews indexOfObject:view] 

NSArray и его методы ваш друг. Метод indexOfObject: вернет NSNotFound вместо -1.

Если это подкласс одного из содержащихся в нем представлений, то он не будет отображаться. В частности, если вы имеете дело с NSTableViewCell.

+0

хорошо, что было довольно надзором с моей стороны .. в любом случае, теперь я всегда получаю '2147483647' через' NSLog (@ "% i", [self.superview.subviews indexOfObject: self]); 'любые идеи? – Jacksonkr

+0

Вероятно == NSNotFound, нужно больше деталей: используемые классы, время, чтобы попасть в отладчик и посмотреть, что происходит – bshirley

Смежные вопросы