我创建了2个UIViews阵列(游戏棋子,线索)。我正在尝试更新其中一些UIViews的中心。如果我在更新中心后没有添加视图,则中心会在模拟器中更新。但是,如果我添加另一个视图,它不会更新。你能帮我理解这里发生了什么,以及我如何让阵列中的UIview一直更新?
下面的示例代码:(注意 - for循环遍历UIView数组以确定哪一个将被更新)
for (int i=0; i<[newPositionArray count]; i++)
{
NSString *imageIdentifier = [newPositionArray objectAtIndex:i];
CGPoint newCenter;
newCenter = .... code to calculate new center
if ([imageIdentifier compare:@""])
{
BOOL clueFound = NO;
for (UIView *piece in _gamePieces)
{
if (![[piece accessibilityIdentifier] compare:imageIdentifier])
{
piece.center = newCenter;
[piece setAlpha:0.5];
clueFound = YES;
}
}
if (!clueFound)
{
for (UIView *clue in _attributeClues)
{
if (![[clue accessibilityIdentifier] compare:imageIdentifier])
{
CGRect oldViewRect = CGRectMake(clue.center.x, clue.center.y-22, 44, 44);
[clue setAlpha:0.5];
clueFound = YES;
[clue setCenter:newCenter];
UIImageView *newimage = [[UIImageView alloc]initWithFrame:oldViewRect];
[newimage setImage:[[clue.subviews objectAtIndex:0] image]];
[newimage setAccessibilityIdentifier:imageIdentifier];
[self.view addSubview:newimage];
}
}
}
}
}
}
}
如果我注释掉上面的最后一行代码,那么其他视图会在模拟器中更改中心。如果我不对最后一行代码发表评论,那么他们就不会改变中心。在任何一种情况下,视图的alpha都会发生变化。我想添加视图,并更新中心。
答案 0 :(得分:0)
我找到了一个有效的答案。上面的函数在另一个函数中被调用,并且中心被更新为在退出上述函数时丢失的局部变量。所以我通过将中心存储在字典中,并在该函数的调用函数中更新中心来解决它。