【发布时间】:2014-01-31 07:42:54
【问题描述】:
我有一个 TableView。它使用 JSON 从网络接收数据并将数据填充到单元格中。另外,我在 TableView 上方有 SegmentedControl。我必须了解如何通过单击 segmentedControl 的每个段来显示不同的数据(通过“类型”参数)。
一切正常(我的代码如下)。但我想通过在数据数组中使用'type'参数将数据拆分到每个段
我的 JSON 代码:
[{
"title":"message one",
"subtitle":"sub one",
"type":1
},{
"title":"message two",
"subtitle":"sub two",
"type":2
}, {
"title":"message three",
"subtitle":"sub three",
"type":2
}, {
"title":"message four",
"subtitle":"sub four",
"type":3
}]
分段控制:
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"All", @"Present", @"Missing", nil]];
[segmentedControl addTarget:self action:@selector(segmentedControlChanged:) forControlEvents:(UIControlEventValueChanged)];
segmentedControl.frame = CGRectMake(0, 0, 100, 30);
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.selectedSegmentIndex = 0;
[self.tableView addSubview:segmentedControl];
segmentedControlChanged 方法
- (void) segmentedControlChanged:(id)sender
{
UISegmentedControl* segmentedControl = (UISegmentedControl*)sender;
segmentIndex = segmentedControl.selectedSegmentIndex; // segmentIndex defined in .h file
[self.tableView reloadData];
}
让我们展示一些单元格
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if(cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell"];
}
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
UILabel *titleField = (UILabel *)[cell viewWithTag:10];
UILabel *subField = (UILabel *)[cell viewWithTag:11];
titleField.text = [NSString stringWithFormat:@"%@", [[dataList objectAtIndex:indexPath.row] valueForKey:@"title"]];
subField.text = [NSString stringWithFormat:@"%@", [[dataList objectAtIndex:indexPath.row] valueForKey:@"subtitle"]];
switch (segmentIndex)
{
case 0:
cell.backgroundColor = [UIColor brownColor];
break;
case 1:
cell.backgroundColor = [UIColor whiteColor];
break;
case 2:
cell.backgroundColor = [UIColor blueColor];
break;
default:
break;
}
return cell;
}
谢谢你,对不起我的英语!
【问题讨论】:
标签: ios iphone objective-c uitableview uisegmentedcontrol