可重用的UITableViewController上的动态控制元素

时间:2016-02-13 17:14:56

标签: ios objective-c uitableview

我正在尝试将UITableViewController用于多种用途。我的问题是我想根据显示列表的意图显示不同的按钮和其他元素。

我目前正在使用多个单元格原型来显示每个项目细节的不同信息,但我也希望能够根据意图交换控件。我一直在展示和隐藏控件以实现这一目标,但是看故事板会有点难看。

我在考虑使用容器视图......只是想到我把它扔出去看看是否有人在做类似的事情。我不想创建单独的列表视图只是为了更改按钮。

1 个答案:

答案 0 :(得分:0)

如果没有更多细节,很难说这是否能解决您的问题。但是,我在我当前的项目中正是这样做的,这是如何: 我将假设以下内容。如果他们不成立,请告诉我,我会相应地更新我的答案。

  • 您正在为每个排列和组合创建一个单元格原型,包括操作。所以原型单元太多了。
  • 您的行为是'按钮'或单元格上的类似控件(而不是滑动以显示编辑操作)。

为您的单元格创建自定义类。为您的操作添加容器并将其正确放置在故事板中。将容器连接到电池中的插座。

@interface MyCustomCell : UITableViewCell

@property MyCellTypeEnum type;
-(void) configure;
@end

@implementation MyCustomCell 

-(void) configure {
  switch(type) {
    case type1:
      // add actions to container
      break;
    case type2:
      // etc.
  }
}
@end

在TableViewController' cellForRowAtIndexPath中执行以下操作:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  // ... dequeue appropriate cell
  cell.type = <appropriate type>
  [cell configure];
  return cell;
}

希望有所帮助。