UIButton 的 iOS 自定义标签
Posted
技术标签:
【中文标题】UIButton 的 iOS 自定义标签【英文标题】:iOS custom tag for UIButton 【发布时间】:2013-09-02 06:59:21 【问题描述】:由于我有许多调用相同目标方法的按钮,因此我需要为每个 UIButton 存储附加信息。整数标签对我来说是不够的,因为我需要保存至少两个整数值。
我有许多具有相同目标的按钮:
[button addTarget:self action:@selector(onButtonClick:) forControlEvents:UIControlEventTouchDown];
然后我可以得到一个发件人标签:
[((UIButton *) senter) tag];
我有一些值的 NSDictionary。根据按下的按钮,我需要更改 NSDictionary 中的值。 NSDictionary 由行组成,由行组成,由列组成。我需要知道要更改的元素的索引,这就是为什么我需要保存一个自定义标签,它应该包含行索引、子行索引、列索引等。
我正在考虑选择哪种方法:
将整数标签解析为 NSString,然后将该字符串拆分成一个部分。
创建一个自定义 UIButton 类,允许将标签存储为 对象。
创建一个自定义 UIButton 类,其中包含几个变量 需要。或者你甚至可以提出更好的方法。
提前致谢。
【问题讨论】:
标签仅用于获取特定的按钮标识符,您可以通过相同的方法获得选定的按钮。因此您可以使用相关按钮在方法中设置其他信息。 创建一个自定义 UIButton 类,允许将标签存储为对象。这种方法最好不要西方时间去做。 您能否详细说明/分享您为什么需要 2 个整数值? 【参考方案1】:我认为您误解了视图标签的预期目的(或者您理解它,并试图滥用它:))。该标签仅用于从另一个视图中识别一个视图,实际值不打算用于任何(或很多);它当然不是为了存储模型的某些部分。
如果您使用 tag 属性来识别按下了哪个按钮,那么您可以执行相应的逻辑。
【讨论】:
任何答案对您有帮助吗?【参考方案2】:您始终可以以数字的形式创建独特的模式。您可以为不同的目的创建不同的模式,然后您可以将所有这些模式合并为一个模式,该模式本身就是一个数字,然后您可以将其保存为 标签。
例如,您可以将 12 小时 37 分钟和 20 秒的时间转换为 123720 本身就是一个数字,然后您可以将其用作 tag。
在这里,您的按钮标签包含您需要的变量(小时、分钟和秒)。
您可以通过yourButton.tag
获取按钮标签的值。然后正如你提到的,你可以拆分标签的值并得到所有的变量。
更新:
看起来你有一个 table 类型的模式,并且在 table 的每个 cell 中,你都有一些你想要制作的元素唯一标识。
因此,您将需要 行号 和 列号 来使该元素独一无二。在这种情况下,您可以使用(rownumber)(colnumber)
之类的模式。
例如,tag = 0503
将为您提供第 5 行和第 3 列的组件。
这种方式没有任何问题。你可以使用它。
【讨论】:
现在就是这样。我将其转换为整数模式,然后将其拆分。但我认为这不是最先进的解决方案,最好改为自定义 UIButton 类。 @user2146071:你这样做的目的是什么? @user2146071 : 检查我的更新。 我认为访问类的字段比解析和拆分值要快得多。 @user2146071 : “类的字段” 我没有得到你想说的。但是这里没有任何东西(在设置/获取标签值中)可能会减慢您的执行速度。你可以简单地使用这个方法,我很确定它会起作用。以上是关于UIButton 的 iOS 自定义标签的主要内容,如果未能解决你的问题,请参考以下文章
在从 XIB 加载的自定义视图中修改 UIButton 的标题标签
具有自定义视图的 UIButton - addTarget:action:forControlEvents: 不起作用