我是新手,所以对我遇到的以下问题的任何建议都将不胜感激。
我有一个应用程序,您可以在其中输入多个项目,然后在后续的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;
}
如何跟踪每个值,然后在哪里设置每个滑块值并保存到上下文?
答案 0 :(得分:2)
你快到了。在sliderChangedValues
方法中,添加以下内容:
Criteria *myCriteria = [criteriasRankingArray objectAtIndex:indexPath.row];
myCriteria.criteriaRank = [NSNumber numberWithFloat:slider.value];
我不会在此方法中保存上下文,因为您已将滑块设置为连续,因此可能会触发大量保存消息。当用户离开视图或其他一些合适的点时保存它。