Как уже упоминалось, вы можете поместить строку поиска в tableHeaderView
свойство UITableView
, которое поместит ее в верхнюю часть таблицы без необходимости позиционирования вручную. Я не уверен, как это работает с индексацией, хотя.
Что касается совместного использования UISearchBar
, я не могу придумать вескую причину вместо того, чтобы иметь один для каждого представления таблицы - разница в памяти должна быть незначительной, а установка и отключение делегата и тому подобное могут быть серьезными. хлопот. Была ли какая-то конкретная причина, по которой вы хотели поделиться панелью поиска? Если вы хотите постоянство, вы можете сохранить текст панели поиска в viewWillDisappear
и установить его в viewWillAppear
.
Если вы действительно хотите поместить строку поиска в первую ячейку, а не в заголовок таблицы, вы можете сделать что-то вроде этого:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = //etc, normal cell creation
if (indexPath.section == 0 && indexPath.row == 0) {
[cell addSubview:self.searchBar];
}
return cell;
}
Но размещение строки поиска в заголовке таблицы гораздо более распространено и намного проще в управлении.