根据tag获取控件
2019-08-13 本文已影响0人
第一梯队利群
自己无聊写个项目,遇到一个问题,那就是我封装了一个方法,这个方法创建了一个view,并在view中添加了label。但是当我在Controller中想要更改这个label的值得时候,我发现我不知道该怎么更改,思考了一下,突然想到了可以根据tag值来获取这个label控件,然后更改其值。
这个就是我封装的那个创建view的方法:
- (UIView *)creatViewWithText:(NSString *)text WithTitle:(NSString *)title{
UIView *view = [[UIView alloc] init];
view.backgroundColor = [UIColor whiteColor];
UILabel *lab = [[UILabel alloc] init];
lab.text = text;
lab.textColor = RGBCOLOR(126, 125, 125);
UILabel *titleLab = [[UILabel alloc] init];
//---------------------------------------------------------
//这里就是我后加的tag值,tagNum是一个全局变量,赋予了默认值100
//因为这个方法需要调用很多次,因此我就让tagNum自增了。
titleLab.tag = ++tagNum;
//---------------------------------------------------------
titleLab.text = title;
UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow_right_gray"]];
[view addSubview:lab];
[view addSubview:img];
[view addSubview:titleLab];
[lab mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(view.mas_centerY);
make.left.mas_equalTo(view.mas_left).offset(10);
make.height.mas_equalTo(20);
}];
[img mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(view);
make.width.height.mas_equalTo(15);
make.right.mas_equalTo(view.mas_right).offset(-30);
}];
[titleLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.height.equalTo(view);
make.right.mas_equalTo(img.mas_left).offset(-15);
}];
return view;
}
接下来我们需要在Controller中获取这个label控件,并更改其text值:
//这里我需要用一个UILabel对象去接收它。
//(UILabel *)是将根据tag值获取到的控件强制转换为UILabel对象。
UILabel *find_label = (UILabel *)[_wantStopView viewWithTag:101];
find_label.text = @"123";
//期初我认为这样无法更改label值,认为这里的赋值只是将label拷贝一份给find_label,所以更改的其实是find_label的text,而没有更改我想要的那个label
//但是这里实际上不是copy一份给find_label,而是将label的地址给了find_label
//所以我们更改find_label也就相当于更改label