0

「GoalsViewController」クラスのゲームのバッジであるUIImageViewsが10個あり、hidden = YESに設定されています。 Interface Builderで実行します。KVCを使用して辞書からプロパティ値を取得

私はそれらを非表示にしたいと思います。私の "GameViewController"クラスで特定のレベルに達したとき。

私の解決策がうまくいくかどうか分からないので、私は立ち往生しています。

私がこれまで持っていることは次のとおりです。

GoalsVC.h私は

NSMutableDictionary *goalsDictionary; 

GoalsVCに続いてgoalsDictionary

-(NSMutableDictionary *)goalsDictionary; 

を返すgetterメソッドを持っています。 m私はallocと目標を起動する辞書

goalsDictionary = [[NSMutableDictionary alloc]initWithCapacity:10]; 

私は9回以上は異なるレベルの鍵を変更し、この同じメソッド呼び出しを繰り返しImageViewの

UIImageView *goalImage = [[UIImageView alloc]init]; 

goalImage.hidden = YES; 

[goalsDictionary setValue:goalImage forKey:@"PassedLevelOne"]; 

を作成します。

これで、辞書に隠されているなどのプロパティを取得できないことがわかったのですがメソッドsetValue:はオブジェクトを取り、forKey:は文字列を取ります。

GameControllerView内の何かが発生したときにGoalsViewControllerに非表示プロパティをNOに設定するより良い方法がありますか?

答えて

1

私はあなたを正しく理解していますが、これはあなたが探しているものですか?

UIImageView *passedLevelOneImageView = (UIImageView *)[goalsDictionary objectForKey:@"PassedLevelOne"]; 
passedLevelOneImageView.hidden = NO; 

私に知らせて、もう一度やり直すことができます。

1

もちろん、辞書の値であるオブジェクトのプロパティを取得できます。次のようにvalueForKeyPath:メソッドを使用できます。

id myProperty = [goalsDictionary valueForKeyPath:@"PassedLevelOne.hidden"]; 

PSもちろん、プロパティがBOOLのようなプリミティブの場合、結果をキャストしてそれに応じて値を割り当てることができます。

+0

+1これは答える必要があります – matm

関連する問題