我有一个UILabel数组如下:
@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构建或者我需要一种不同的方法吗?感谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
任务完成!我是这样做的:
// Clear the fields
for (NSInteger idx = 0; idx < 8; idx++) {
UILabel *l = [[ClueLabels clueLabels].labels objectAtIndex:idx];
[l setText:@""];
显然,我还在学习!
答案 2 :(得分:0)
您也可以这样做:
for (UILabel *theLabel in clueLabels)
{
[theLabel setText:@"];
}