xcode iphone Сравнить UIButton из: (id) отправителя с UIButtons из массива - PullRequest
0 голосов
/ 18 апреля 2011

У меня есть несколько видов с кнопками на нем.Все эти представления связаны с одним ViewController, и в этом ViewController у меня определены IBOutlets для всех этих 50 кнопок.

Для облегчения доступа к ним я сохранил все кнопки UIButton в многомерном NSMutableArray.Для целей тестирования я дал всем кнопкам уникальное название Label.Кнопки UIB правильно хранятся в массиве, я могу проверить это с помощью titleLabel.

После нажатия одной кнопки я вызываю метод:

-(IBAction)pushButton:(id)sender

Там я сравниваю:

if ( [allButtonsArray objectAtIndex:1] == sender ) 
// do something

Несмотря на то, что выбранная UIButton из массива и отправителяКнопка имеет одинаковое названиеLabel (что в моем случае уникально), если оператор IF неверен.

Есть ли у кого-нибудь идеи, почему?

Спасибо, Пэт

Ответы [ 2 ]

0 голосов
/ 19 апреля 2011

Я просто выводил UIButton, используя NSLog% @, который я сравнивал, и обнаружил, что такая информация, как «Frame», «opaque», «CALayer» и т. Д., Одна и та же, НО:

Реальная памятьИдентификатор типа «UIRoundedRectButton: = x4b3f7f0» отличается. Поэтому оператор IF никогда не верен.

Что я сделал сейчас, так это назначил каждому UIButton в Интерфейсном Разработчике определенное значение тега (в разделе View).К этому тегу можно получить доступ [тег отправителя], и его можно легко сравнить с числовым массивом, чтобы проверить, какая кнопка была нажата.

0 голосов
/ 19 апреля 2011

Вы пробовали использовать их как кнопки UIB?

if ( (UIButton *)[allButtonsArray objectAtIndex:1] == (UIButton *)sender )

или используйте метод isEqual вместо ==

также, почему бы просто не сравнить titleLabel вместо этого?

...