我刚刚将 UIButton 添加到 UIView。如何获取按钮索引?

Posted

技术标签:

【中文标题】我刚刚将 UIButton 添加到 UIView。如何获取按钮索引?【英文标题】:I just had added UIButton to UIView. How can I get buttons index? 【发布时间】:2011-03-15 12:24:27 【问题描述】:

谢谢,解决了。

我有问题。一些使用 xib 文件创建的 UIButtons。当我打印它的值时,我得到了虚幻的索引。 @property(非原子,保留)IBOutlet UITextField *distanceTextField; 例如:索引等于 2147483647 但是当我以编程方式添加对象时,我得到了真正的索引。 index 等于 12。为什么?

【问题讨论】:

我有问题。请查看我更新的问题。 【参考方案1】:
int index = [[YourUIView subviews] indexOfObject:YourUIButton];

【讨论】:

【参考方案2】:

遍历 UIView 的子视图是一种不可靠的查找按钮的方法。无法保证按钮在子视图数组中的位置,特别是如果系统(或您)稍后将其他元素添加到视图中。如果不进行某种检查,如果您检索到错误的子视图并尝试对其进行操作,您的应用程序很容易崩溃。

更好的方法是为 UIButton 设置自定义标记值。

例如

button.tag = 1000;

现在你可以通过直接找到按钮

[view viewWithTag:1000];

这可以用于任何 UIView 子类,而不仅仅是 UIButtons。

【讨论】:

以上是关于我刚刚将 UIButton 添加到 UIView。如何获取按钮索引?的主要内容,如果未能解决你的问题,请参考以下文章

将 UIView 作为子视图添加到 UIButton 并将其置于前面无法正常工作

直接在 UIWindow 中添加 UIButton 和 UITextField 或在 UIView 中添加

UIButton 未添加到 UIView

将目标添加到 UIButton 以进行超级视图

在 Swift 中将多个 UIButton 添加到多个 UIView

无法将 UIButton 添加到 tableView 部分