UITableView
如果用户单击它,我想更改 an 的部分索引的颜色。
我可以在初始化表格视图和任何其他状态时设置sectionIndexColor
和sectionIndexTrackingBackgroundColor
,但我发现没有方法可以在单击时更改索引颜色。
更新:
我的意思是较大的 tableviews 中的 AZ 侧栏。这是一些图像(请参见图 2 中的灰色条)
未选中状态:
选择状态:
UITableView
如果用户单击它,我想更改 an 的部分索引的颜色。
我可以在初始化表格视图和任何其他状态时设置sectionIndexColor
和sectionIndexTrackingBackgroundColor
,但我发现没有方法可以在单击时更改索引颜色。
更新:
我的意思是较大的 tableviews 中的 AZ 侧栏。这是一些图像(请参见图 2 中的灰色条)
未选中状态:
选择状态:
我对此只有一个相当肮脏的解决方案,因为苹果不支持公共 api。我的实现效果很好,如果将来某些 api 发生变化(只是不再工作),也不应该崩溃。我将其子类化UITableView
并将我自己的回调添加到 sectionIndex 视图中,并将其作为子视图添加到表中。
@interface MyTableView : UITableView
@end
@implementation MyTableView
- (void)selectionStarted {
[self setSectionIndexColor:[UIColor greenColor]];
}
- (void)selectionStoped {
[self setSectionIndexColor:[UIColor redColor]];
}
- (void)addSubview:(UIView *)view {
[super addSubview:view];
if ([NSStringFromClass([view class]) isEqualToString:@"UITableViewIndex"] && [view isKindOfClass:[UIControl class]]) {
UIControl *cont = (UIControl *)view;
[cont addTarget:self action:@selector(selectionStarted) forControlEvents:UIControlEventTouchDown];
[cont addTarget:self action:@selector(selectionStoped) forControlEvents:UIControlEventTouchUpInside];
[cont addTarget:self action:@selector(selectionStoped) forControlEvents:UIControlEventTouchUpOutside];
[cont addTarget:self action:@selector(selectionStoped) forControlEvents:UIControlEventTouchCancel];
}
}
@end
使用UITableView
委托
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
然后修改需要的部分,你有 indexPath。
最简单的方法 - 只需将 indexPath 作为属性并重新加载tableView
,然后viewForHeaderInSection
你应该比较 indexPath 并设置你想要的颜色。