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: 不起作用

UIkit框架(14)自定义标签控制器

如何在 iOS 的 UITableView Cell 中为 UIButton 设置标签值?

创建具有多个标签的自定义按钮

iOS 自定义标签栏项目比标签栏高