Сохранение одного экземпляра UISearchBar в 4 отдельных UITableViews - PullRequest
0 голосов
/ 04 апреля 2010

Я нахожусь в разгаре приложения для iPhone, которое должно иметь 4 отдельных UITableView объекта с общим доступом к одному UISearchBar в первом разделе и первой строке вышеупомянутых UITableView объектов.

Я попытался сместить кадр UITableView на 44 пикселя, а затем добавил панель поиска в качестве подпредставления моих UIViewController view. Это работает, но я не могу использовать индекс таблицы для прокрутки вверх до панели поиска, так как это не ячейка в табличном представлении. Мне нужно иметь строку поиска в самом табличном представлении.

Моя цель - иметь один и тот же UISearchBar в первом разделе нескольких табличных представлений.

Большое спасибо.

Ответы [ 2 ]

3 голосов
/ 05 апреля 2010

Как уже упоминалось, вы можете поместить строку поиска в 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;
}

Но размещение строки поиска в заголовке таблицы гораздо более распространено и намного проще в управлении.

1 голос
/ 04 апреля 2010

Вы можете просто добавить UISearchBar в качестве представления заголовка каждого tableView при переключении между ними.

[oldTableView setTableHeaderView:nil];
[newTableView setTableHeaderView:searchBar];

Конечно, вполне возможно, что я неправильно понял, что вы пытаетесь сделать. Если это так, пожалуйста, уточните.

...