访问在运行时创建的UILabel

时间:2015-04-21 06:48:58

标签: ios objective-c

我在UILabel (lblCount)的操作方法上创建了UIButton (btnAdd)UIButton (Add Item Button)。新UILabelUIButton已添加到scrollviewUILabel (lblCount)显示点击UIButton (btnAdd)的计数。这里,addBtnClickCount是一个整数,用于计算点击次数。

    UILabel * lblCount = [[UILabel alloc] initWithFrame:CGRectMake( 50, 100*addBtnClickCount, 25, 25)];
    lblCount.text = [NSString stringWithFormat:@"%d",count];
    lblCount.tag = addBtnClickCount;
    lblCount.textColor = [UIColor whiteColor];
    lblCount.textAlignment = NSTextAlignmentCenter;
    [self.scrollView addSubview:lblCount];

    addBtnClickCount = addBtnClickCount+1;

当用户点按添加项按钮时,会有多个label (lblCount)button (btnAdd)。我想访问特定labeladd button的特定display the count

4 个答案:

答案 0 :(得分:2)

在这里,我理解@Hem Poudyal,在viewWithTag的帮助下知道这一点。他将获得输出。但不知道如何实现这一目标。所以我在这里描述。

第1步:在此我将UILabelUIButton添加到self.view而不是UIScrollView。我希望你能把它转换为UIScrollView。在这里,我在UILabel tagUIButton tag之间应用了一些关系。您可以在下面的代码中看到。

for (int i=0; i<10; i++) {

        UILabel * lblCount = [[UILabel alloc] initWithFrame:CGRectMake( 50, (i*50)+((i+1)*5), 100, 50)];
        lblCount.text = [NSString stringWithFormat:@"%d",0];
        lblCount.tag = [[NSString stringWithFormat:@"%d%d",i,i] integerValue];
        lblCount.backgroundColor = [UIColor yellowColor];
        lblCount.textAlignment = NSTextAlignmentCenter;
        [self.view addSubview:lblCount];

        UIButton* btnTemp = [UIButton buttonWithType:UIButtonTypeCustom];
        btnTemp.tag = i;
        btnTemp.backgroundColor = [UIColor redColor];
        [btnTemp addTarget:self action:@selector(btnTempClick:) forControlEvents:UIControlEventTouchUpInside];
        btnTemp.frame = CGRectMake( 150, (i*50)+((i+1)*5), 100, 50);
        [btnTemp setTitle:[NSString stringWithFormat:@"Button : %d",i] forState:UIControlStateNormal];
        [self.view addSubview:btnTemp];
    }

步骤2:在UIButton选择器方法中,执行以下操作。

-(IBAction)btnTempClick:(id)sender{
    UIButton* btnInner = sender;

    NSInteger lblTagbaseOnButtonTag = [[NSString stringWithFormat:@"%ld%ld",btnInner.tag,btnInner.tag] integerValue];
    UILabel* lblReceived = (UILabel*)[self.view viewWithTag:lblTagbaseOnButtonTag];
    lblReceived.text = [NSString stringWithFormat:@"%ld",[lblReceived.text integerValue]+1];
}

输出是:

enter image description here

答案 1 :(得分:2)

您已在标签上设置了标记。创建一个可变数组labelArray并为其添加标签。要访问特定标签,请在添加按钮的操作上执行以下代码。

       -(void)addItem:(UIButton*)button{
          UILabel* lblShowCount = [_labelArray objectAtIndex:[button tag]];
          lblShowCount.text = [NSString stringWithFormat:@"%d", [lblShowCount.text integerValue]+1];

         }

答案 2 :(得分:1)

你应该有一个数组,你也可以添加标签和按钮(这可能是一个包含字典或自定义类或多个数组的数组)。现在,当点击按钮时,您可以找到它在数组中的位置并获取相应的标签进行更新。

作弊方式是设置按钮和标签的tag,以便您可以使用viewWithTag:找到另一个。

答案 3 :(得分:0)

您需要在创建标签和按钮时设置唯一的tag值,并使用viewWithTag:可以访问相应的ui容器。