在下面的if
声明中,我怎样才能使piece1的名称变为动态,以便检查其他部分,即piece1,piece2,... piece5。
我必须让它看起来像[@“piece%d”,i]我只是不确定写这个的正确方法是什么,因为我刚开始使用iOS。
for (int i = 0; i < 6; i++) {
if(CGRectContainsPoint([piece1 frame], location)){
piece1.center = location;
}
}
答案 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值中的值匹配。