我正在iphone上构建计算器用于学习目的。
我有一种情况,我有多个操作(+, - ,/)按钮和多个操作数按钮,例如1,2,3等。
所以所有的操作都连接到我的viewController中的operationPressed方法。
UI构建器中是否有一种方法可以识别每个UIButton,而不是在视图中使用Text作为按钮?
什么是最佳做法?
更新
我可以在UI构建器中设置的标识标签怎么样?我可以参考一下吗?
我问的原因是我想识别按钮但是说'/'但是按钮上的文字是'÷'所以这就是为什么我需要一些其他的字符串标识符,最终可以作为参数传递给我模型。 http://cl.ly/3H1j032f1M1d3A2Y3501
答案 0 :(得分:2)
通常处理此方法的方法是将每个按钮的tag
属性设置为某个唯一的整数值,并编写采用sender
参数的操作方法,例如:
- (void)operationPressed:(id)sender
{
// cast the argument to a more specific type
UIButton *button = (UIButton *) sender;
// get the view's tag
NSInteger tag = [button tag];
// Do whatever it was you were going to do...
}
修改强>
以下是来自tag
的{{1}}属性的声明:
UIView.h
答案 1 :(得分:1)
您可以在.xib或代码中定义按钮的标签(button.tag = 123)
与发件人一起定义您的IBAction,并检查按下了哪个按钮。
- (void) operationPressed: (id) sender
{
UIButton *op = (UIButton *) sender;
switch(op.tag)
{
case 1: break; // op 1
case 2: break; // op 2
...
}
}
[编辑:2012年3月2日]使用Storyboard
在故事板场景中,选择UIButton,然后在右侧窗格中,转到按钮属性,向下滚动以查看按钮的视图属性,您可以在那里设置标记值。
答案 2 :(得分:0)
在为Interface Builder中的每个按钮定义标签之前,您还可以为每个按钮创建一个插座并在Interface Builder中连接它
- (void)operationPressed:(id)sender
{
if(self.operationMultiplyButton == sender){
} else if(…) {
}
}
就我个人而言,我试图避免使用标签的解决方案,因为在我看来,他们会转向冗余信息:指针已经是一个独特的值,而不是增加了文档的需求。