我在iOS 6.1应用程序中有一个经典的UITableViewController。表格视图是静态的,并在故事板中设置,它表示使用UITableViewCellAccessoryCheckmark作为ON/OFF开关来表示可配置的设置。 TableView中有一部分基于其他设置禁用另一个单元格。该单元格禁用以下代码:静态UITableView出现禁用不透明alpha不工作
cell.userInteractionEnabled = NO;
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.alpha = 0.4;
一旦TableView被加载,代码工作正常。
问题是当TableView被加载时,被禁用的单元代码无法正常工作,因为代码中的alpha设置不起作用。 UserInteractionEnabled属性正在工作,但不是alpha设置。
这是在视图加载时应禁用UITableViewCell的代码。
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell* cell = [super tableView:tableView cellForRowAtIndexPath:indexPath];
if (cell)
{
...
if ([[self currentSettingForIndexPath:indexPath] isEqualToString:@"myDependencySetting"])
{
...
cell.userInteractionEnabled = NO;
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.alpha = 0.4;
NSLog(@"Disabling cell: %0.2f", cell.alpha);
...
}
else
{
cell.alpha = 1.0;
cell.userInteractionEnabled = YES;
}
}
NSLog(@"Cell alpha: %0.2f", cell.alpha);
return cell;
}
这里的代码是相当简单的,请问超级细胞(因为是自己的UITableViewController子类,它不应该是一个问题),然后配置单元。如果当前索引路径上的单元格取决于另一个设置,则禁用该单元格(我剥去了一些不相关的其他代码行)。
输出读取:
...
Cell alpha: 1.00
...
Cell alpha: 1.00
Disabling cell: 0.40
Cell alpha: 0.40
Cell alpha 1.00
...
因此根据输出单元的alpha属性设置是否正确。但单元格alpha未设置,但由于userInteractionEnabled,单元格不可打开。
相同的代码适用于禁用tableView的委托didSelectRowAtIndex中的单元格。
问题是:为什么和什么可以覆盖单元格的alpha值?
谢谢。
你能解释为什么我不能像这样访问单元格的alpha?因为在tableview加载完成后它可以正常工作,而不是在cellForIndexPath函数中。然而,你所建议的工作,但它不会使单元透明,只有内容视图内的textLabel。所以这不是一个好的解决方案。 – Legoless
我会认为你可以像你一样访问它,但如果它不工作,那么这将是下一个猜测。可能有一个cell.background或者你可以访问的东西。否则,它会出现一些奇怪的问题,如何将单元出列并重用它们 – Ben
如果这是出列单元和重复使用单元的问题,则应该注意为每个单元设置α。但事实并非如此。我不认为有很多静态表视图出列。 – Legoless