/ / xcode iphone Порівняйте UIButton від: (id) відправника з UIButtons з Array - xcode, uiview, if-statement, nsmutablearray, порівняйте

xcode iphone Порівняти UIButton від: (id) відправника з UIBoutons з Array - xcode, uiview, if-statement, nsmutablearray, compare

У мене є кілька подань із кнопками на ньому. Всі ці подання пов'язані з одним ViewController, і в цьому ViewController у мене визначено IBOutlets для всіх цих 50 кнопок.

Щоб полегшити доступ до них, я зберігав усі кнопки UIB убагатовимірний NSMutableArray. Для тестування я дав усім кнопкам унікальний titleLabel. Кнопки UIB правильно зберігаються в масиві, я можу перевірити це за допомогою titleLabel.

Після натискання однієї кнопки я викликаю метод:

-(IBAction)pushButton:(id)sender

Там я порівнюю:

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

Незважаючи на те, що вибрана кнопка UIB із масиву та кнопка відправника мають однаковий titleLabel (що є унікальним у моєму випадку), твердження IF не відповідає дійсності.

Хто-небудь має ідею, чому?

Дякую, Пат

Відповіді:

0 для відповіді № 1

ви пробували кидати їх як UIBкнопки?

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

або використовувати isEqual метод замість ==

також, чому б не просто порівняти titleLabel замість цього?


0 для відповіді № 2

Я просто вивожу UIButton за допомогою NSLog% @, який я порівнюю, і з'ясував, що така інформація, як "Frame", "непрозорий" "CALayer" тощо, однакова, АЛЕ:

Справжній ідентифікатор пам'яті, наприклад "UIRoundedRectButton: = x4b3f7f0", відрізняється Тому твердження IF ніколи не відповідає дійсності.

Що я зробив зараз, це призначив кожну кнопку UIB вInterface-Builder певне значення тегу (у розділі Перегляд). Цей тег може бути доступний за допомогою [тег відправника], і його можна легко порівняти з числовим масивом, щоб перевірити, яку кнопку було натиснуто.