Задание значений для массива UILabels, который в свою очередь находится в NSMutableDictionary - PullRequest
0 голосов
/ 26 февраля 2012

У меня есть массив UILabels следующим образом:

@interface ClueLabels : NSObject

@property (nonatomic) IBOutlet UILabel *label1, *label2, *label3, *label4, *label5, *label6, *label7, *label8;
@property (nonatomic, readonly) NSArray *labels;

+ (ClueLabels *)clueLabels;

- (void)labelsDidLoad;

@end

, который реализован как синглтон:

@implementation ClueLabels

@synthesize label1 = _label1;
@synthesize label2 = _label2;
@synthesize label3 = _label3;
@synthesize label4 = _label4;
@synthesize label5 = _label5;
@synthesize label6 = _label6;
@synthesize label7 = _label7;
@synthesize label8 = _label8;

@synthesize labels = _labels;

+ (ClueLabels *)clueLabels {
    static ClueLabels *singleton;
    static dispatch_once_t once;
    dispatch_once(&once, ^{
        singleton = [[ClueLabels alloc] init];
    });
    return singleton;
}

- (void)labelsDidLoad {
    _labels = [[NSArray alloc] initWithObjects:_label1, _label2, _label3, _label4, _label5, _label6, _label7, _label8, nil];
    NSLog(@"Clue labels did load");
}

@end

Затем сохранен в NSMutableDictionary следующим образом:

 NSMutableArray *keyArray;
 NSMutableArray *valueArray;
 keyArray = [NSMutableArray arrayWithObjects:@"answerButtons", @"clueLabels", nil];
 valueArray = [NSMutableArray arrayWithObjects: [AnswerButtons answerButtons], [ClueLabels clueLabels], nil];

 NSMutableDictionary *externals = [NSMutableDictionary dictionaryWithObjects:valueArray
                                                       forKeys:keyArray];

Теперь я хочу записать метки (например, очистить их), но они похоронены в одиночном коде и сохранены в виде массива внутри словаря с ключевыми значениями.Концептуально мне нужно отправить сообщение одному объекту в словаре, используя синтаксис ключ-значение, а затем перебрать объекты в этом массиве, очистив их, например, с помощью setText @ "".Это вложенное сообщение с циклом?Я не могу понять, как структурировать эту задачу.Спасибо.

РЕДАКТИРОВАТЬ: я подумал и решил (возможно, неправильно), что, поскольку метки находятся в одиночном, мне вообще не нужен доступ к ним через словарь, мне просто нужен доступ ксинглтон и словарь будут обновляться автоматически.Поэтому я решил, что мой вопрос / проблема больше "как разговаривать с моим синглтоном".Я осмотрелась ТАК, а потом поняла, что могу сделать что-то вроде этого:

NSLog(@"%@", [ClueLabels clueLabels].labels)

, который возвращает детали каждого ярлыка.Я хотел бы иметь возможность получить количество меток, чтобы я мог зацикливать их и устанавливать для их заголовков произвольные строки.Могу ли я построить вокруг [ClueLabels clueLabels] .labels или мне нужен другой подход?Спасибо.

Ответы [ 3 ]

0 голосов
/ 26 февраля 2012

Миссия выполнена!Вот как я это сделал:

// Clear the fields

for (NSInteger idx = 0; idx < 8; idx++) {
    UILabel *l = [[ClueLabels clueLabels].labels objectAtIndex:idx];
    [l setText:@""];

Очевидно, я все еще учусь!

0 голосов
/ 27 сентября 2013

Вы также можете сделать что-то вроде этого:

   for (UILabel *theLabel in clueLabels)
   {
   [theLabel setText:@"];
   }
0 голосов
/ 26 февраля 2012

U может зациклить UILabels, как вы сказали.Или вы можете использовать метод «makeObjectsPerformSelector» для массива, который (как следует из его имени) заставит все объекты в нем выполнить отправленный вами селектор.Таким образом сохраняется часть цикла.Но в любом случае вам нужно ухватиться за массив меток, содержащихся в словаре

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...