тег отправителя всегда возвращает 1 - PullRequest
1 голос
/ 04 февраля 2012

У меня есть клавиатура пианино. Каждая кнопка (клавиша пианино) имеет свой тег, назначенный в IB. Тэг используется для идентификации каждой кнопки, чтобы я мог воспроизвести звук, принадлежащий этой клавише пианино. Я подключаю каждый ключ пианино к следующему IBAction:

-(IBAction)playNoteFromKeyTouch:(id) sender{
    UIButton *pressedButton = sender;
    int tag = [pressedButton tag];
}

Значение, возвращаемое тегом [selectedButton], всегда равно 1. Я пробовал разные способы получить это, например:

-(IBAction)playNoteFromKeyTouch:(id) sender{
    NSInteger tag = ((UIView*)sender).tag;
}

И просто:

-(IBAction)playNoteFromKeyTouch:(id) sender{
    int tag = [sender tag];
}

Независимо от того, что я делаю, даже когда я назначаю теги программно для каждой клавиши пианино, я всегда получаю тег == 1. Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 04 февраля 2012

Я думаю, вы должны пойти с другим подходом.Создайте класс Octave, создайте подклассы ваших ключей из UIView, добавьте свойство октавы и свойство примечания к ключу.

в качестве альтернативы вы можете иметь массив для каждой октавы и проверить, какой индекс в каком массиве должен определить отправительтеги note.

хороши для идентификации представления, загруженного из nib-файла.для всего остального правильная обработка объектно-ориентированных объектов лучше!

0 голосов
/ 04 февраля 2012

Я собрал тестовый проект и убедился, что ваш код должен давать вам соответствующий тег.Возможно, вы пропустили что-то за пределами кода.Попробуйте следующее:

  • Убедитесь, что вы изменили правильный .xib (iPhone вместо iPad и т.* Перезапустите Xcode и убедитесь, что теги все еще установлены
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...