我有一个让我发疯的问题。这一切都是关于实时更新一个 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方法,但不确定。我尝试self.tableView.reloadData
在sliderChanged方法中插入a,但后来UISlider没有移动,最后我得到了这个异常:
由于未捕获的异常'NSRangeException'而终止应用程序,原因:'-[NSCFArray objectAtIndex:]:超出索引(0)界限(0)'
提前感谢您的帮助
Javi