更新并保存在Core Data应用程序中的UITableView中显示的多个UISlider值

时间:2011-10-17 14:03:03

标签: iphone core-data uitableview uislider

我是新手,所以对我遇到的以下问题的任何建议都将不胜感激。

我有一个应用程序,您可以在其中输入多个项目,然后在后续的tableview中,它们将全部加载,我可以使用uislider为每个项目分配一个值。

我知道如果我知道我将拥有的物品的确切数量,如何跟踪和保存这些值,但考虑到我必须跟踪的uislider值的数量取决于输入的项目数量,我不知道该去哪里

到目前为止,在我的sliderValueChanged方法中,我有以下内容可以跟踪每个uislider子视图:

- (IBAction)sliderChangedValues:(id)sender {
      UISlider *slider = (UISlider *)sender;
      CGPoint correctedPoint = 
      [slider convertPoint:slider.bounds.origin toView:self.tableView];    
      NSIndexPath *indexPath = 
      [self.tableView indexPathForRowAtPoint:correctedPoint];
      NSLog(@"Using slider in row %d", indexPath.row);
}

这是我的用于加载单元格的cellForRowAtIndexPath方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath {   

Criteria *myCriteria = [criteriasRankingArray objectAtIndex:indexPath.row];


static NSString *CellIdentifier = @"CriteriaRankingCell";

OptionsDetailViewCell *cell = (OptionsDetailViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    [self.cellNib instantiateWithOwner:self options:nil];
    cell = optionsCell;
    self.optionsCell = nil;

}

cell.criteriaRankSlider.minimumValue = 1.00;
cell.criteriaRankSlider.maximumValue = [criteriasRankingArray count];
cell.criteriaRankSlider.continuous = YES;


cell.criteriaNameLabel.text = [NSString stringWithFormat:@"%@", myCriteria.criteriaName];
cell.criteriaRankSlider.value = [myCriteria.criteriaRank floatValue];


return cell;
}

如何跟踪每个值,然后在哪里设置每个滑块值并保存到上下文?

1 个答案:

答案 0 :(得分:2)

你快到了。在sliderChangedValues方法中,添加以下内容:

Criteria *myCriteria = [criteriasRankingArray objectAtIndex:indexPath.row];
myCriteria.criteriaRank = [NSNumber numberWithFloat:slider.value];

我不会在此方法中保存上下文,因为您已将滑块设置为连续,因此可能会触发大量保存消息。当用户离开视图或其他一些合适的点时保存它。