【问题标题】:How do I use a UISegmentedControl to control UITableView cells?如何使用 UISegmentedControl 来控制 UITableView 单元格?
【发布时间】:2013-01-08 08:59:04
【问题描述】:

我已经成功设置了一个 Tab Bar 控制器。第一个视图中的表格视图和第二个选项卡中的简单 UIView。 UIView 有它自己的类。我为后者添加了一个分段控件,最终我想根据选择的分段更改表格视图单元格中使用的图像。

单元格图像是数组的一部分,并且已使用自定义单元格进行设置。

我已经在 UIView 类中设置了分段控件,添加了@property 和 @syntesize,但我终生无法弄清楚如何从 UIView 类更改单元格图像。

提前致谢!

我的 UIView.h 中的段控件是这样定义的

@property (weak, nonatomic) IBOutlet UISegmentedControl *selectedSegment

我还没有包含 IBAction,因为我不是 100% 它需要去哪里或如何编写。

在我的表格视图中,我的单元格图像当前是在 cellForRowAtIndexPath 中定义的

cell.itemImageView.image = [UIImage imageNamed:[icons objectAtIndex:indexPath.row]];

我的想法是在 cell 方法中放置一个 switch 语句,每个 case 都指向一个不同的图标集

switch (something)
{
    case 0:
    cell.itemImageView.image = [UIImage imageNamed:[iconSetOne objectAtIndex:indexPath.row]];
    break;

    case 1:
    cell.itemImageView.image = [UIImage imageNamed:[iconSetTwo objectAtIndex:indexPath.row]];
    break;

    default
    break;
}

但我很确定这是错误的做法,而“某事”位正是我所坚持的。

【问题讨论】:

  • 此时你应该展示你已经尝试过/得到的东西。我会说向 TableView 添加一个属性(可能是 bool 或 int),并在构建表时检查它。
  • 贴出uiview类和自定义cell类的代码
  • 代码已添加,如有遗漏请告诉我,谢谢!

标签: objective-c cocoa-touch uitableview ios6 uisegmentedcontrol


【解决方案1】:

1) 在简单的UIView 中,您可以进行分段控制:

  • 定义一个插座 _tableViewController 连接到表视图的控制器
  • 定义一个动作方法segmentedControlChanged:来响应被触发的分段控件

2) 在表视图控制器中:

  • 定义selectedSegmentIndex 类型的属性NSInteger

3) 现在添加 action 方法的实现:

- (void) segmentedControlChanged:(id)sender
{
  UISegmentedControl* segmentedControl = (UISegmentedControl*)sender;
  _tableViewController.selectedSegmentIndex = segmentedControl.selectedSegmentIndex;
  [_tableViewController.tableView reloadData];
}

4) 在表格视图控制器中,您现在可以将您建议的switch 语句添加到tableView:cellForRowAtIndexPath::

switch (self.selectedSegmentIndex)
{
  [...]
}

请注意,在第 3 步中调用 reloadData 是强制表格视图使用正确图像更新 所有 单元格的粗略方法。 UITableView 中还有其他方法可以让您更精细地控制要更新的单元格(例如 reloadSections:withRowAnimation:)。

【讨论】:

  • 非常好,不仅我有答案,我也学到了一些东西。我现在正在使用 reloadSections:withRowAnimation,非常酷。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-27
相关资源
最近更新 更多