UITableView部分索引与搜索栏重叠

时间:2010-04-11 11:36:17

标签: iphone objective-c cocoa-touch uitableview uikit

嗨:我想在UITableView中显示一个节索引,在表视图标题中有一个搜索栏(不是节标题)。 但索引条现在与搜索栏重叠。是否有一个优雅的解决方案来避免这种情况,让索引从表头开始?

2 个答案:

答案 0 :(得分:10)

我意识到这个答案来得很晚,但我遇到了同样的问题,并在这里和其他地方进行了搜索。我在这里找到了很好的答案 Changing the size of the UISearchBar TextField?

有几个建议,但我发现最直接的建议是将UISearchBar和UINavBar放在UIView中并将该视图传递给setTableView。问题是该表控制标题视图的大小,忽略您添加的任何设置。因此,添加视图会使表格变得愉快,您可以进入内部并设置搜索栏大小而不会受到桌子的干扰.UINavBar具有与UISearchBar相同的背景样式,因此以视觉上一致的方式填充额外空间,你必须调整它的框架 - 见下文:

UISearchBar searchBar = [[[UISearchBar alloc] initWithFrame:CGRectMake(0, 1, 290, 40)] autorelease];
UIView *searchView = [[[UIView alloc] initWithFrame:CGRectMake(0, 1, 320, 40)] autorelease];
UINavigationBar *navBar = [[[UINavigationBar alloc] initWithFrame:CGRectMake(1, -1, 320, 41)] autorelease]; // same gradient/style as search bar
[navBar setTintColor:[UIColor lightGrayColor]];
[searchView addSubview:navBar];
[searchView addSubview:searchBar];

答案 1 :(得分:4)

我将空字符串添加到索引数组:

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    NSMutableArray *array = [NSMutableArray arrayWithArray:_sortedKeys];

    [array insertObject:@"" atIndex:0];
    [array insertObject:@"" atIndex:0];

    return array;
}