"ноль" зарезервированный номер тега в какао? - PullRequest
3 голосов
/ 12 января 2011

Я хочу знать, является ли ноль зарезервированным номером тега в какао.

Я спрашиваю, потому что я строил UIButtons в цикле for от 0 до n и назначал индекс цикла в качестве каждого тега созданных кнопок.

Затем, когда я попытался ссылаться с помощью viewWithTag и попытался изменить свойство, я получил ошибку sigbart для кнопки с нулевым тегом. Все остальные кнопки работают нормально.

Чтобы заставить мой код работать, мне пришлось создать кнопки, использующие для 1 - n + 1

Ответы [ 2 ]

8 голосов
/ 12 января 2011

tag - целочисленная переменная экземпляра в подклассах UIView, и, как и любой другой целочисленный ivar, она инициализируется с 0 по умолчанию.

Так что в вашем случае любой тег подпредставления, для которого не было явно задано какое-либо значение, будет равен 0, и если существует несколько таких подпредставлений, viewWithTag: метод может вернуть любой из них - возможно, он просто возвращает не экземпляр UIButton, и вы получить доступ к некоторым специфичным для кнопки свойствам в вашем коде, чтобы получить исключение (нераспознанный селектор отправлен) во время выполнения.

1 голос
/ 12 января 2011

Согласно документации значение по умолчанию для тега равно нулю.(т. е. UIViews и т. д. без определенного установленного значения тега будут равны нулю.) Таким образом, вполне вероятно, что SIGBART вызывается тем, что вы пытаетесь ссылаться на несколько (или просто недействительный) элемент управления при вызовеviewWithTag с нулевым значением.

Другими словами, вы должны начать нумерацию пользовательских тегов с 1.

...