我正在创建一个带座位计划布局的iOS应用。
尝试使用面向对象的方法,我为TableLayoutObjects
创建了一个类,因为它们具有不同的属性。
要将这些TableLayoutObjects
放在屏幕上,我将它们表示为UIButtons
,这是在我遍历TableLayoutObjects
数组时创建的。
- (void) loadTables
{
for (TableLayoutObjects *layoutObjs in arrTableLayoutObjects)
{
if ([layoutObjs.shape isEqualToString:@"r"]) {
// rectangle
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
......
if(layoutObjs.isInteractable) {
[button addTarget:self action:@selector(tableTouchedDown:) forControlEvents:UIControlEventTouchDown];
[button addTarget:self action:@selector(tableTouchedUpInside:) forControlEvents:UIControlEventTouchUpInside];
}
} else {
// text only. use label
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(layoutObjs.posX, layoutObjs.posY, layoutObjs.width, layoutObjs.height)];
......
}
}
}
我的事件处理程序现在看起来如下所示。
// reverts back to original color and perform other instructions
- (void) tableTouchedUpInside:(UIButton *) button
{
button.layer.backgroundColor = [UIColor colorWithWhite:0.2f alpha:.5f].CGColor;
}
我的问题是:如何识别UIButtons
到TableLayoutObjects
?在更改按钮颜色后的事件处理程序中,我还想要获取或设置所选TableLayoutObjects
的某些属性。我怎么能这样做?
答案 0 :(得分:2)
我认为您的示例非常适合实施 UICollectionView
。按钮解决方案不太干净,也不复杂。
答案 1 :(得分:1)
您可以将按钮的tag
设置为相关项目的arrTableLayoutObjects
数组中的索引。
或者,创建一个自定义类,它将表作为参数,并且是按钮的目标。此对象现在可以直接访问按钮和表项。