0

我已经成功地设置了一个标签栏控制器。第一个视图中的表格视图和第二个选项卡中的简单 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]];

我的想法是在单元格方法中放置一个 switch 语句,每个案例都指向一个不同的图标集,所以

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;
}

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

4

1 回答 1

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)
{
  [...]
}

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

于 2013-01-08T00:59:04.273 回答