这是我想做的。
我有5个标签。我想使用变量更改属性(背景颜色)。因此,如果变量(x)等于3,它将改变label03上的背景。
同时,将有5张图片。我会使用相同的变量更改属性(alpha)。因此,如果变量(x)如上所述等于3,则会更改label03背景和image03上的alpha。
我缺少的是选择正确标签的方法,因此(x)指向我需要它指向的内容。
答案 0 :(得分:1)
假设您正在使用笔尖创建和定位这些元素,您只需打开属性检查器并为每个标签和图像设置标记。我会给标签标签1x,图像标签2x(其中x是元素的编号)。因此标签具有标签10-14并且图像具有标签20-24。然后在viewController中,如果你有一个int x,你可以使用以下行获得label和imageViews。
UILabel *label = [self.view viewWithTag:10+x];
UIImageView *imageView = [self.view viewWithTag:20+x];
答案 1 :(得分:1)
我认为你应该这样做:
// create an offset by control type (zero is not a good value here)
#define kLABEL_TAG_OFFSET 32
#define kIMAGE_TAG_OFFSET 64
// when creating the controls
UILabel *label0 = [[UILabel alloc] initWithFrame:...];
label0.tag = kLABEL_TAG_OFFSET + 0;
// and so on 0..3
label4.tag = kLABEL_TAG_OFFSET + 4;
imageView4.tag = kIMAGE_TAG_OFFSET + 4
// then, when you want to alter a particular image and label
//
- (void)setPropertiesOnControlsIndexedBy:(NSInteger)index {
UILabel *label = (UILabel *)[self.view viewWithTag:kLABEL_TAG_OFFSET + index];
UImageView *image = (UImageView *)[self.view viewWithTag:kIMAGE_TAG_OFFSET + index];
label.backgroundColor = [UIColor greenColor];
image.alpha = 0.5;
}
答案 2 :(得分:0)
创建/自定义viewDidLoad
中的所有标签和图像,每次更改变量值时,都要告诉视图重新加载。
[someView reloadData];
答案 3 :(得分:0)
如果要更改x,请调用-reloadData
,并将默认值设置为x,因此在重新加载时,它们会自动更改。
- (void) xChanged {
[self.tableView reloadData];
}
- (UITableViewCell *) tableView:(UITableView *) tv cellForRowAtIndexPath:(NSIndexPath *) ip {
cell.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"image-%d", x]];
cell.imageView.alpha = x;
}