我有十个UIImageViews是我的“GoalsViewController”类游戏的徽章,它们被设置为hidden = YES;在Interface Builder中。
我想让它们隐藏= NO;在我的“GameViewController”类中达到某些级别时。
我被困了,因为我不确定我的解决方案是否会起作用。
到目前为止我所拥有的是:
在 GoalsVC.h 我有
NSMutableDictionary *goalsDictionary;
和一个返回goalsDictionary
的getter方法-(NSMutableDictionary *)goalsDictionary;
然后在 GoalsVC.m 中我分配并初始化goalsDictionary
goalsDictionary = [[NSMutableDictionary alloc]initWithCapacity:10];
我创建了一个imageView
UIImageView *goalImage = [[UIImageView alloc]init];
goalImage.hidden = YES;
[goalsDictionary setValue:goalImage forKey:@"PassedLevelOne"];
我重复这个方法再调用九次,将密钥更改为不同级别。
现在,我意识到我无法获得隐藏在字典中的属性吗?方法setValue:
接受一个对象,forKey:
接受一个字符串。
当我的GameControllerView中的某些内容发生时,是否有更好的方法告诉GoalsViewController将隐藏属性设置为NO?
答案 0 :(得分:1)
我不确定我是否正确理解你,但这是你在寻找什么?
UIImageView *passedLevelOneImageView = (UIImageView *)[goalsDictionary objectForKey:@"PassedLevelOne"];
passedLevelOneImageView.hidden = NO;
如果不让我知道,我可以再试一次。
答案 1 :(得分:1)
当然,您可以获取对象的属性,该属性是字典中的值。您可以使用valueForKeyPath:
方法,如下所示:
id myProperty = [goalsDictionary valueForKeyPath:@"PassedLevelOne.hidden"];
PS。当然,如果属性是BOOL
这样的原语,您可以转换结果并相应地赋值。