3

Я пытаюсь имитировать поведение табличного вида, похожего на приложение iPod для художников - это секционное представление таблицы с индексом раздела справа, с панелью поиска вверху, но изначально скрытый при отображении вида.UISearchBar в UITableView

Я использую sdk 3.1.2 и IB, поэтому просто перетащил UISearchDisplayController в свой NIB - он прокладывает все для поиска. Проблема начинается, потому что я добавляю UISearchBar к первому разделу UITableView, потому что, если я правильно понимаю, я должен сделать это, чтобы я мог перейти к строке поиска, коснувшись значка поиска в разделе index напрямую? Когда появится представление таблицы, я вижу панель поиска, но она изменилась, и теперь у меня есть белый блок за индексом раздела вверху. Он не принимает цвет окружения UISearchBar, что интересно отличается от показанного в Interface Builder.

Я нашел подсказку, чтобы добавить небольшую навигационную панель и UISearchBar в UIView, а затем добавить ее в ячейку таблицы. Это работает, но цвет фона панели навигации - это то, что вы ожидаете обычно (серый), а не цвет, как указано выше. Более интересно, если я коснуюсь панели поиска, чтобы начать поиск, а затем нажмите «Отмена», все исправлено. Фон по всей ячейке tableview, когда панель поиска, является тем же самым?

ответ

12

ответил на мой собственный вопрос, но может быть полезным для других начинающих:

  • Поместите панель поиска в заголовке просмотра таблицы, когда вид нагрузки, прокрутите contentOffset вниз высоту этой панели поиска (как правило, 44 пикселей) , но легко проверить динамически
  • Добавить значок поиска в индексе раздела с «{поиск}»
  • Сделать sectionIndexSection для поиска -1
  • при обращении индекс раздел затрагивает использовать «особое» значение индекса для поиск «-1» (для прокрутки контура ntOffset обратно (0, 0)

Update: используйте строку постоянной UITableViewIndexSearch строку вместо незарегистрированной строки «{поиска}» - т.е. вернуть его в качестве одного из элементов массива при реализации:

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView 

в UITableViewDataSource.

+1

Это предпочтительно использовать 'UITableViewIndexSearch' вместо' @ "{Поиск}" ' –

+0

Right! Не нужно было этого с раннего 3.0 кодирования - см. Здесь тоже: http://stackoverflow.com/questions/235120/whats-the-uitableview-index-magnifying-glass-character – petert

+1

Я также добавил это, чтобы предотвратить это '{search } 'string из названия в этом разделе:' if (section == 0) {return nil;} ' – Maurizio

1

Поместите контроллер поиска в начале Tableview и попробовать это:

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index { 
    if (index==0){ 
     [tableView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO]; 
     return -1; 
    } 
... 
} 


- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { 
     NSMutableArray * retValue =[NSMutableArray arrayWithArray:[YOUR ARRAY]]; 
     [retValue insertObject:UITableViewIndexSearch atIndex:0]; 
     return retValue; 
} 
Смежные вопросы