我已经成功设置了Tab Bar控制器。第一个视图中的表视图和第二个选项卡中的简单UIView。 UIView有它自己的类。我已经为后者添加了分段控件,最终我想根据选择的段来更改表格视图单元格中使用的图像。
单元格图像是数组的一部分,并且已使用自定义单元格进行设置。
我在UIView类中设置了分段控件,添加了@property和@syntesize,但我不知道如何从UIView类中更改单元格图像。
提前致谢!
我的UIView.h中的段控件定义如下
@property(弱,非原子)IBOutlet UISegmentedControl * selectedSegment
我还没有包含IBAction,因为我不是100%需要去的地方或者如何写。
在我的表格视图中,我的单元格图像当前在cellForRowAtIndexPath
中定义cell.itemImageView.image = [UIImage imageNamed:[icons objectAtIndex:indexPath.row]];
我的想法是在单元格方法中放置一个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;
}
但我很确定这样做的方法是错误的,而“某些东西”就是我所坚持的。
答案 0 :(得分: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:
)。