Objective c 设置UILabel数组的值,该数组依次位于NSMutableDictionary中
我有一个UILabel数组,如下所示:Objective c 设置UILabel数组的值,该数组依次位于NSMutableDictionary中,objective-c,Objective C,我有一个UILabel数组,如下所示: @interface ClueLabels : NSObject @property (nonatomic) IBOutlet UILabel *label1, *label2, *label3, *label4, *label5, *label6, *label7, *label8; @property (nonatomic, readonly) NSArray *labels; + (ClueLabels *)clueLabels; - (voi
@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
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];
它是作为单例实现的:
@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中,如下所示:
@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
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)
for (UILabel *theLabel in clueLabels)
{
[theLabel setText:@"];
}
返回每个标签的详细信息。我希望能够得到标签的数量,这样我就可以循环它们,并将它们的标题设置为任意字符串。我可以围绕[ClueLabels ClueLabels].标签构建,还是需要不同的方法?谢谢。你可以按你说的那样在UILabel上循环。或者,您可以对数组使用“makeObjectsPerformSelector”方法,该方法将(如其名称所示)使数组中的所有对象执行您发送的选择器。从而节省了循环部分。但是无论哪种方式,你都需要掌握字典中包含的标签数组,任务完成了!我是这样做的:
// Clear the fields
for (NSInteger idx = 0; idx < 8; idx++) {
UILabel *l = [[ClueLabels clueLabels].labels objectAtIndex:idx];
[l setText:@""];
//清除字段
对于(NSInteger idx=0;idx<8;idx++){
UILabel*l=[[ClueLabels ClueLabels].labels对象索引:idx];
[l setText:@”“;
显然,我还在学习!你也可以这样做:
NSLog(@"%@", [ClueLabels clueLabels].labels)
for (UILabel *theLabel in clueLabels)
{
[theLabel setText:@"];
}
谢谢。我想我的问题是关于最后一部分“…掌握字典中包含的标签数组。请参阅编辑原始问题。