【问题标题】:How to make array of UIViews perform selector如何使 UIViews 数组执行选择器
【发布时间】:2011-03-22 16:30:57
【问题描述】:

我有一个 NSArray 的 UIViews,

NSArray *someViews;

我可以让他们执行这样的选择器:

[someViews makeObjectsPerformSelector:@selector(setBackgroundColor:) withObject:someColor];

我想让他们执行一个选择器,该选择器采用像 CGAffineTransformIdentity 这样的结构参数

在 NSValue 中简单地对转换进行装箱是行不通的:

NSValue *someTransform = [NSValue valueWithCGAffineTransform:CGAffineTransformIdentity];
[someViews makeObjectsPerformSelector:@selector(setTransform:) withObject:someTransform];

有什么想法吗?

【问题讨论】:

    标签: objective-c cocoa-touch uikit


    【解决方案1】:

    最简单的方法可能就是在这里使用for 循环:

    for (UIView *view in someViews)
        [view setTransform:CGAffineTransformIdentity];
    

    【讨论】:

    • 我同意循环方法简单有效。仅供参考,是否绝对不可能使用结构参数调用方法?
    • 使用performSelector: 之类的路线,是的,我相信这是不可能的。
    • 无论如何,你猜 -performSelector:withObject: 会做什么?可以肯定的是,该代码看起来与上面 nil 的代码非常相似。如果您确实需要使用 -performSelector: 类型的消息发送结构,请在 NSArray 上创建一个类别并添加 -performSelector:withStruct: 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    相关资源
    最近更新 更多