iOS 7上的UITableView部分索引间距 [英] UITableView section index spacing on iOS 7
问题描述
在iOS 6上,我的UITableView的部分索引会将所有项目均匀地分布在表格视图的高度上。在iOS 7中,所有项目都在中间聚集在一起,使得项目难以点击。有没有办法将它们分开?
On iOS 6, my UITableView's section index would distribute all of its items evenly across the height of the table view. In iOS 7 all of the items are clumped together in the middle, making the items difficult to tap. Is there any way to space them out?
推荐答案
这是 Anton Malmygin 回答,您可以通过在阵列上添加更多空的itens来添加更多空间:
Here is a implementation of Anton Malmygin answer, you can add more space by just adding more empty itens on the array:
首先,让我们来看看用假索引创建一个数组。
First, let's create an array with the fake index.
NSArray *array = self.mydataArray; // here are your true index
self.sectionsTitle = [NSMutableArray array];
int n = array.count;
// In IOS 7 all index of the items are clumped together in the middle,
// making the items difficult to tap.
// As workaround we added "fake" sections index
// reference: https://stackoverflow.com/questions/18923729/uitableview-section-index-spacing-on-ios-7
for (int i = 0; i < n; i++){
[self.sectionsTitle addObject:array[i]];
[self.sectionsTitle addObject:@""];
}
然后,您可以使用以下方法实现tableview委托方法:
Then, you can implement tableview delegate methods with the following approach:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
// In IOS 7 all index of the items are clumped together in the middle,
// making the items difficult to tap.
// As workaround we added "fake" sections index
// reference: https://stackoverflow.com/questions/18923729/uitableview-section-index-spacing-on-ios-7
if ([sectionsTitle[section] isEqualToString:@""]){
return 0;
}
return x; // return your desire section height
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
// In IOS 7 all index of the items are clumped together in the middle,
// making the items difficult to tap.
// As workaround we added "fake" sections index
// reference: https://stackoverflow.com/questions/18923729/uitableview-section-index-spacing-on-ios-7
if ([sectionsTitle[section] isEqualToString:@""]){
return nil;
}else{
// return your desire header view here,
// if you are using the default section header view,
// you don't need to implement this method
return // return your custom view
}
}
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
return self.sectionsTitle;
}
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
// In IOS 7 all index of the items are clumped together in the middle,
// making the items difficult to tap.
// As workaround we added "fake" sections index
// reference: https://stackoverflow.com/questions/18923729/uitableview-section-index-spacing-on-ios-7
if ([title isEqualToString:@""]){
return -1;
}
return [sectionsTitle indexOfObject:title];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// In IOS 7 all index of the items are clumped together in the middle,
// making the items difficult to tap.
// As workaround we added "fake" sections index
// reference: https://stackoverflow.com/questions/18923729/uitableview-section-index-spacing-on-ios-7
if ([sectionsTitle[section] isEqualToString:@""]){
return 0;
}
return // your logic here;
}
结果如下:
这篇关于iOS 7上的UITableView部分索引间距的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!