【发布时间】:2009-08-30 09:25:49
【问题描述】:
我有一个问题让我发疯。这一切都是为了实时更新一个 UITableViewCell,它具有另一个 UITableViewCell 内的 UISlider 的值。
问题
单元格已更新,但单元格中标签的大小似乎与表示的值的大小不符。我会尽力解释得更好。
UISlider 的最小值为 -100,最大值为 100。因此,第一次加载 TableView 时,cell.detailText.text 显示 0.0% 女巫显示正常,但是当我移动滑块并且值更大时,例如 55.5%,标签不能容纳这个多余的字符,它显示“55.....”
这就是我创建包含 de UISlider 值的单元格的方式,在 cellForRowAtIndexPath 委托方法中创建 UISlider
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:ProductCellIdentifier] autorelease];
cell.textLabel.text=@"Performance";
cell.detailTextLabel.text = [NSString stringWithFormat:@"%.1f%%", slider.value];
cell.tag=1002;
这就是我在 cellForRowAtIndexPath 方法中创建 de UISlider 的方式:
cell = [[[UITableViewCellalloc] initWithFrame:CGRectZero reuseIdentifier:ProductCellIdentifier] autorelease];
slider = [[UISlideralloc] initWithFrame:CGRectMake(90, 12, 200, 25)];
slider.maximumValue = 100;
slider.minimumValue = -100;
slider.continuous = TRUE;
[slideraddTarget:self action:@selector(sliderChanged:) forControlEvents:UIControlEventValueChanged];
[cell.contentView addSubview:slider];
cell.tag=0;
[slider release];
这就是我在 sliderChanged 方法中所做的,以更新单元格。
UITableViewCell *celda= (UITableViewCell *)[[self tableView] viewWithTag:1002];
celda.detailTextLabel.text = [NSString stringWithFormat:@"%.1f%%", slider.value];
我怀疑解决方案是关于使用 UITableView 的 reloadData 方法,但不确定。我尝试在sliderChanged 方法中插入self.tableView.reloadData,但后来UISlider 没有移动,最后我得到了这个异常:
由于未捕获的异常“NSRangeException”而终止应用程序,原因:'-[NSCFArray objectAtIndex:]: 索引 (0) 越界 (0)'
提前感谢您的帮助
哈维
【问题讨论】:
标签: iphone objective-c uitableview uislider