Настройка UITableView с помощью панели поиска

У меня есть TableView с панелью поиска. Но я хочу добавить еще одно представление (скажем, метку) в TableView (чтобы оно прокручивалось вместе с табличным представлением). Например, если вы откроете приложение «Контакты телефона» на iPhone, в разделе «Все номера» вы увидите ярлык «Мой номер:». Который должен находиться на том же иерархическом уровне, что и панель поиска. Я попытался добавить новую метку прямо над строкой поиска, но раскадровки не позволяют мне это сделать.

Снимок экрана структуры документа для ViewController

Здесь, если я перетащу UILabel в эту иерархию, он либо заменит панель поиска вверху, либо метка попадет внутрь ячейки прототипа. Нет другого способа показать панель поиска и метку одновременно.

Есть ли способ сделать это?


person Rukshan Marapana    schedule 09.11.2012    source источник


Ответы (2)


Создайте отдельное представление вне представления контроллера представления (или внутри, это не имеет значения. Вы даже можете создать его программно) и свяжите его с IBOutlet myCustomView. Создайте IBOutlet searchBar и свяжите свой UISearchBar

в представленииDidLoad; вы можете использовать [searchBar addSubView:myCustomView]; и добавьте свой собственный вид над панелью поиска.

вы можете показать/скрыть (myCustomView.hidden = YES/NO) пользовательское представление или добавить и удалить его из суперпредставления, когда вам нужно.

ex.

- (IBAction)didTapShowCustomHeaderButton {
    myCustomView.hidden = NO;
}

- (IBAction)didTapHideCustomHeaderButton {
    myCustomView.hidden = YES;
}
person flopr    schedule 19.11.2012

добавьте двух делегатов ниже в код

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
    {

     UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 30)] autorelease];
      label.text = @"My Label";
    label.backgroundColor = [UIColor clearColor];

      return label;   

     }   

-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section{
        return 30 // this height should be equivalent to the myLabel height u declared in headerView above
        }
person AppleDelegate    schedule 09.11.2012
comment
Привет, спасибо за ответ. Но мне нужно, чтобы эта метка уходила за пределы экрана с панелью поиска при прокрутке таблицы вниз. - person Rukshan Marapana; 09.11.2012
comment
где именно я это хочу... я полагаю, вам это нужно как часть таблицы - person AppleDelegate; 09.11.2012
comment
Мне нужно скрыть панель поиска во время выполнения и отобразить другой пользовательский интерфейс, когда панель поиска скрыта. Чтобы сделать это, я думаю, мне нужно добавить этот другой элемент управления пользовательским интерфейсом в то место, где точно расположена панель поиска (иерархически) - person Rukshan Marapana; 09.11.2012