Индекс раздела UITableView перекрывает строку поиска

Привет. Я хочу показать индекс раздела в UITableView со строкой поиска в заголовке таблицы (не заголовок раздела). Но индексная полоса теперь перекрывает строку поиска. Есть ли элегантное решение, чтобы избежать этого, и пусть индекс начинается ниже заголовка таблицы?

Ответ 1

Я понимаю, что этот ответ приходит очень поздно, но у меня была такая же проблема и поиск здесь и в другом месте. Здесь я нашел хорошие ответы: Изменение размера текстового поля UISearchBar?

Есть несколько предложений, но наиболее явным было то, что я должен был поместить 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];

Ответ 2

Я добавляю пустые строки в массив индексов:

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

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

    return array;
}