动态编写UIImageView名称

时间:2012-02-20 18:39:40

标签: objective-c ios

在下面的if声明中,我怎样才能使piece1的名称变为动态,以便检查其他部分,即piece1,piece2,... piece5。

我必须让它看起来像[@“piece%d”,i]我只是不确定写这个的正确方法是什么,因为我刚开始使用iOS。

for (int i = 0; i < 6; i++) {

    if(CGRectContainsPoint([piece1 frame], location)){
        piece1.center = location;  
    }
}

2 个答案:

答案 0 :(得分:1)

这样的事情:

for (int i = 0; i < 6; i++) {
    // Create a selector to get the piece
    NSString *selectorName = [NSString stringWithFormat:@"piece%d", i];
    SEL selector = NSSelectorFromString(selectorName);
    UIView *peice = [self performSelector:selector];

    // Now do your test
    if(CGRectContainsPoint([piece frame], location)){
        piece1.center = location;  
    }
}

关键位为NSSelectorFromString以将字符串转换为选择器,performSelector:以使对象与其匹配。

答案 1 :(得分:0)

首先在初始化时为imageView添加标签 然后将您的代码更改为此

for (int i = 0; i < 6; i++) {

 UIImageView *piece = (UIImageView *)[self.view viewWithTag:i] ;

    if(CGRectContainsPoint([piece frame], location)){
        piece.center = location;  
    }
}

确保您的标记与循环i值中的值匹配。