Получение информации от кнопки с помощью (id) отправителя - PullRequest
0 голосов
/ 26 декабря 2009

Итак, это довольно просто, но я не уверен, как это сделать. Чтобы получить заголовок от кнопки, вы можете использовать:

NSString *title = [sender titleForState:UIControlStateNormal];

Однако есть ли способ получить другую информацию от кнопки, такую ​​как «Метка» или «Подсказка»?

А если нет, я хочу иметь возможность выполнять различные действия, если нажата другая кнопка. Итак, есть кнопка «добавить 1», кнопка «добавить 2» и т. Д., Я то же самое «действие», чтобы сделать немного разные вещи. Это решается с помощью оператора «Если», но я не уверен, как сделать сравнение. (Предполагается, что название кнопки «WIN»):

if (title == @"WIN")

Не работает, так как я могу сделать сравнение?

(я тоже пробовал:

NSString *compare = [[NSString alloc] initWithFormat:@"WIN"];
if (title == compare)
{
do something
}

)

Ответы [ 2 ]

4 голосов
/ 26 декабря 2009

Вы всегда должны сравнивать строки, используя isEqualToString:

if ([title isEqualToString:@"WIN"])

Строки будут сравниваться корректно иногда с использованием оператора ==, например, когда вы сравниваете постоянные строки, но вы не должны использовать == для сравнения строк в Objective-C (или Java).

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

На языке, подобном Python, == перегружен, поэтому вы получаете поведение, которое «ожидаете».

1 голос
/ 26 декабря 2009

Другой вариант, который вы можете использовать в крайнем случае, - установить свойство кнопки tag (в IB или в коде), а затем установить

if (sender.tag == 69) {//one button code} else {other button code}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...