我创建了带有标记值的动态UILabel
,我有类似的其他标签没有标记值。
现在我只想访问标签值标签,但我无法访问标签文本值。
这是我的代码。
Dynamic created Label
for (int i= 0; i < [array count]; i++) {
UILabel *defaultLbl = [[UILabel alloc] initWithFrame:CGRectMake(30, 70, 60, 21)];
defaultLbl.text = @"Default";
defaultLbl.backgroundColor = [UIColor clearColor];
defaultLbl.textColor = [UIColor colorWithRed:51.0/255.0 green:51.0/255.0 blue:51.0/255.0 alpha:1.0];
[defaultLbl setFont:[UIFont fontWithName:@"Helvetica" size:12]];
defaultLbl.textAlignment = NSTextAlignmentCenter;
defaultLbl.tag = i+1;
[myButton addSubview:defaultLbl];
[defaultLbl release];
UILabel *masterProName = [[UILabel alloc] initWithFrame:CGRectMake(28, 20, 200, 21)];
masterProName.text = [masterProjListArray objectAtIndex:i];//@"Lorem Ipusum";
masterProName.backgroundColor = [UIColor clearColor];
masterProName.textColor = [UIColor colorWithRed:51.0/255.0 green:153.0/255.0 blue:204.0/255.0 alpha:1.0];
[masterProName setFont:[UIFont fontWithName:@"Helvetica-Bold" size:17]];
masterProName.lineBreakMode = NSLineBreakByCharWrapping;
[myButton addSubview:masterProName];
[masterProName release];
UILabel *masterProID = [[UILabel alloc] initWithFrame:CGRectMake(28, 45, 200, 21)];
masterProID.text = [masterProjIDArray objectAtIndex:i];//@"133 FS";
masterProID.backgroundColor = [UIColor clearColor];
masterProID.textColor = [UIColor colorWithRed:51.0/255.0 green:51.0/255.0 blue:51.0/255.0 alpha:1.0];;
[masterProID setFont:[UIFont fontWithName:@"Helvetica" size:17]];
masterProID.lineBreakMode = NSLineBreakByCharWrapping;
[myButton addSubview:masterProID];
[masterProID release];
}
用户按下长按按钮后的UILabel
访问方法
- (void)longPressTap:(UILongPressGestureRecognizer *)sender
{
if ([recognizer.view tag]) {
UILabel *view = (UILabel *)recognizer.view;
NSLog(@"---%@", view.subviews);
for (UILabel *lbl in view.subviews) {
if (recognizer.view.tag == view.tag) {
NSString *text = view.text;
NSLog(@"---%@", text);
}
}
}
}
这里放日志
"<UIImageView: 0x75b9510; frame = (0 0; 379 100); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x75acef0>>",
"<UILabel: 0x88c4e50; frame = (28 20; 200 21); text = 'Aux Water Waste Trtmnt'; clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x88c49c0>>",
"<UILabel: 0x88c52f0; frame = (28 45; 200 21); text = 'M10000'; clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x88c5380>>",
"<UILabel: 0x88c56c0; frame = (30 70; 60 21); text = '**Default**'; clipsToBounds = YES; userInteractionEnabled = NO; tag = 1; layer = <CALayer: 0x88c5750>>",
"<UIButton: 0x88c6440; frame = (240 10; 70 80); opaque = NO; userInteractionEnabled = NO; tag = 1; layer = <CALayer: 0x88c6500>>"
在此日志中,我只想访问“默认”文本标签
请给我任何建议。
答案 0 :(得分:1)
好吧,你需要知道标签中标签的值与文本中的“默认”一致。我们假设它是42.然后
UILabel *label = [view viewWithTag:42];
会做到这一点。 无论如何,你的解决方案也应该有效查看您正在处理的实际标记值。我有一种胆量,认为识别器.view.tag与标签中带有“默认”的标签没有相同的值。
答案 1 :(得分:1)
您还可以在运行时创建那些插座。
创建一个数组,然后继续添加每个标签的出口。
完成后需要检索它们,您可以通过数组索引轻松访问。
即使您可以创建用于存储插座的字典,也可以在此处按键访问标签。
答案 2 :(得分:0)
当您为UILabel
分配标记时,我们可以从标记中获取标签(如果我们知道,在您知道的情况下我们知道)。
所以试试这种方式
for (int i = 0 ; i <[array count]; i++)
{
UILabel *lbl = (UILabel*)[self.view viewWithTag:i+1];
NSLog(@"--- %@", lbl.text);
}
答案 3 :(得分:0)
以UILabel
为基础获取Tag
。
在int i;
中取.h file
,
并将i=1;
放在 for Loop
for (NSObject *view in self.View.subviews)
{
if ([view isKindOfClass:[UILabel class]])
{
label = (UILabel *)[[self view] viewWithTag:i];
NSLof(@"%@".label.text);
// break;
}
i++;
}
答案 4 :(得分:0)
首先,你应该检查
if (lbl.tag == view.tag)
不
if (recognizer.view.tag == view.tag)
其次,它无论如何都行不通。所有这一切都是确定您所知道的被触摸的视图。如何将标签中的标签值设置为您想要的唯一编号并进行测试
if (lbl.tag == <unique tag number>)