【问题标题】:xcode iphone Compare UIButton from :(id)sender with UIButtons from Arrayxcode iphone 比较来自 :(id)sender 的 UIButton 和来自 Array 的 UIButtons
【发布时间】:2011-04-18 19:38:34
【问题描述】:

我有几个带有按钮的视图。 所有这些视图都链接到一个 ViewController,在这个 ViewController 中,我为所有这 50 个按钮定义了 IBOutlets。

为了方便访问它们,我将所有 UIButton 存储在一个多维 NSMutableArray 中。出于测试目的,我给所有按钮一个唯一的 titleLabel。 UIButtons 正确存储在数组中,我可以使用 titleLabel 进行测试。

按下一个按钮后,我调用一个方法:

-(IBAction)pushButton:(id)sender

我在那里比较:

if ( [allButtonsArray objectAtIndex:1] == sender ) 
// do something

尽管从数组中选择的 UIButton 和发送者 Button 具有相同的 titleLabel(在我的情况下是唯一的),但 IF 语句不正确。

有人知道为什么吗?

谢谢,帕特

【问题讨论】:

    标签: xcode uiview if-statement nsmutablearray compare


    【解决方案1】:

    您是否尝试将它们转换为 UIButtons?

    if ( (UIButton *)[allButtonsArray objectAtIndex:1] == (UIButton *)sender )

    或使用isEqual 方法代替==

    另外,为什么不直接比较 titleLabel 呢?

    【讨论】:

      【解决方案2】:

      我只是使用 NSLog %@ 输出 UIButton,我正在比较并发现“框架”、“不透明”、“CALayer”等信息是相同的,但是:

      像“UIRoundedRectButton: =x4b3f7f0”这样的真实内存ID不同 因此,IF 语句永远不会为真。

      我现在所做的是为 Interface-Builder 中的每个 UIButton 分配一个特定的标记值(在 View 部分中)。这个标签可以被 [sender tag] 访问,并且可以很容易地与一个数字数组进行比较来检查哪个按钮被按下了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-14
        • 1970-01-01
        • 1970-01-01
        • 2017-01-28
        • 1970-01-01
        • 2012-02-15
        相关资源
        最近更新 更多