发件人标签始终返回1
问题描述:
我有一个钢琴键盘。每个按钮(钢琴键)在IB中分配有不同的标签。该标签用于识别每个按钮,以便我可以播放属于该钢琴键的声音。我每个琴键连接到以下IBAction为:发件人标签始终返回1
-(IBAction)playNoteFromKeyTouch:(id) sender{
UIButton *pressedButton = sender;
int tag = [pressedButton tag];
}
由[pressedButton标签]返回的值始终为1。我已经尝试了不同的方式来得到这个,例如:
-(IBAction)playNoteFromKeyTouch:(id) sender{
NSInteger tag = ((UIView*)sender).tag;
}
,简单地:
-(IBAction)playNoteFromKeyTouch:(id) sender{
int tag = [sender tag];
}
不管我做什么,甚至当我指定的标签编程到每个琴键,我总是获取标记== 1,我能怎么会丢失?
答
我认为,你应该采取另一种方法。创建一个Octave类,从UIView中创建你的关键字的子类,并为关键字添加一个八度属性和一个音符属性。
或者,您可以为每个八度音程设置一个数组,并检查发件人在哪个数组中指定索引以确定音符。
标签很好,可以识别从nib文件加载的视图。对于其他任何适当的面向对象的对象处理更好!
+0
感谢您的回答。我忘了我正在使用其他东西的标签。 O_O – 2012-02-04 17:33:36
答
我把一个测试项目放在一起,并验证你的代码应该给你适当的标签。也许你忽略了代码之外的东西。请尝试以下操作:
- 确认您更改正确的.xib(iPhone,而不是iPad等)
- 验证标签中的.xib
- 重新启动的Xcode设置正确,验证标签仍然设置
Add:NSLog(@“Sender is%@”,sender);在playNoteFromKeyTouch里面:确保你获得不同的密钥。 – Rayfleck 2012-02-04 17:00:29
是的,我有不同的钥匙 – 2012-02-04 17:04:54
Wierd。你可以粘贴你的IB面板的屏幕截图来显示你设置标签的位置吗? – Rayfleck 2012-02-04 17:16:03