iOS座位计划布局

时间:2014-03-01 11:30:28

标签: ios objective-c

我正在创建一个带座位计划布局的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;
}

我的问题是:如何识别UIButtonsTableLayoutObjects在更改按钮颜色后的事件处理程序中,我还想要获取或设置所选TableLayoutObjects的某些属性。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

我认为您的示例非常适合实施 UICollectionView 。按钮解决方案不太干净,也不复杂。

答案 1 :(得分:1)

您可以将按钮的tag设置为相关项目的arrTableLayoutObjects数组中的索引。

或者,创建一个自定义类,它将表作为参数,并且是按钮的目标。此对象现在可以直接访问按钮和表项。