Существует проблема, когда я получаю индекс подпредставления - PullRequest
1 голос
/ 15 марта 2011

При получении индекса подпредставления возникает проблема.

int index = [[YourUIView subviews] indexOfObject:YourUIButton];

Некоторые UITextField создаются с помощью файла XIB. Когда я напечатал его значение, я получил нереальный индекс. @property (nonatomic, retain) IBOutlet UITextField * distanceTextField; например: индекс равен 2147483647

Но когда я программно добавляю объект, я получаю реальный индекс. индекс равен 12. Почему?

Ответы [ 2 ]

8 голосов
/ 15 марта 2011

Каждый раз, когда вы выполняете поиск какого-либо индекса (или диапазона) с помощью каркасных методов, сверяйте его результат с константой NSNotFound.На вашей платформе NSNotFound оказался 2147483647. Это решает загадку нереального индекса.

int index = [parentView.subviews indexOfObject:importantButton];
if (index != NSNotFound) {
  // found it
} else {
  // no luck
}

Что касается вопроса, почему ваше представление не найдено - проверьте, действительно ли каждое отделение указывает на какое-то представление в тот момент,выполните этот поиск.

Обновление

Вы можете проверить, настроена ли розетка с помощью отладчика или войдя в нее

    NSLog(@"myView - %@", myView);
2 голосов
/ 15 марта 2011

Скорее всего, индекс равен NSNotFound, что совпадает с NSIntegerMax или 2147483647, сообщая, что индекс объекта не найден.

Попробуйте установить вручнуюиндекс объекта в Интерфейсном Разработчике и поиск по нему.

...