我有一个视图,其中包含许多UIButtons“Tom and Jerry”,“狮子王”等等。我希望他们所有人都在我的视图控制器中调用相同的动作,然后区分不同的按钮以获得特定于按钮的NSString(例如“TomJerry”,“LionKing”等标识符)。
思路:
如何最好地实现这一目标?任何想法,最佳实践,实施模式?
更新:在阅读完第一个答案后(谢谢!),我相信我应该补充一点来澄清。
上述所有方法都应工作;重点是,我并不特别喜欢其中任何一个。我问你要采用哪种方法(以及为什么),或者是否有其他更好的方法。
进一步的“要求”:
if (sender==self.button1) {…} else if (sender==self.button2) {…}
答案 0 :(得分:2)
<强>加强>
一个选项是创建一个UIButton类别,添加一个基于标记返回NSString的方法。你仍然有潜在的标签问题,但标签到字符串的转换 - 实际和概念 - 都在一个地方。
我相信这符合您的原始和进一步的要求。
<强>以前强>
标签快速而轻巧,比较两个整数。
您可以轻松创建一个编号方案,使事物保持清晰分离:1000-1999是这种类型的东西,1000-1099是这个子组,1015是一个实例,等等。
可以使用数字比较:x.tag&gt; 10000这样做。
显然,这意味着你必须跟踪它,你的代码最终可能难以解析。仍然有一些很好的优点。
答案 1 :(得分:0)
您可以比较按钮处理程序中的按钮引用。
IBOutlet UIButton *button1; IBOutlet UIButton *button2; -(IBAction)myButtonHanlder:(id)sender { if (sender == button1) { // do task for button1 } else if (sender == button2) { // do task for button2 } }
注意:我没有编译代码。但我想你已经有了这个主意。
我对您的想法的评论是:
更改标题文字,颜色等非常自然。按钮工作流程不应过多依赖于视图样式。
为这种比较对UIButton进行子类化太多了。
这是2的更脏的版本。
嗯,你需要非常小心,你没有为两个不同的按钮使用相同的标签。
答案 2 :(得分:0)
对于此上下文,最好的方法是创建UIButton类的子类,并添加一个属性,如index或任何其他对您有用的属性。
或者
创建按钮时为其指定一些标签, 根据标签,您可以区分它们,您可以执行任何您想要的操作。
此致
Satya