Изменить размер таблицы - PullRequest
3 голосов
/ 22 июня 2011

Я ищу способ иметь UITableViewController с UITableView сверху и UIPickerView ниже (с фиксированной позицией).

Я нашел решение для фиксации сборщика с кодом ниже:

- (void)viewDidLoad {
    [super viewDidLoad];

    _picker = [[UIPickerView alloc] initWithFrame:CGRectZero];
    _picker.showsSelectionIndicator = YES;
    _picker.dataSource = self;
    _picker.delegate = self;

    // Add the picker to the superview so that it will be fixed
    [self.navigationController.view addSubview:_picker];

    CGRect pickerFrame = _picker.frame;
    pickerFrame.origin.y = self.tableView.frame.size.height - 29 - pickerFrame.size.height;

    _picker.frame = pickerFrame;

    CGRect tableViewFrame = self.tableView.frame;
    tableViewFrame.size.height = 215;

    self.tableView.frame = tableViewFrame;

    [_picker release];
}

Проблема связана с просмотром таблицы, кажется, что изменение размера не работает, поэтому я не вижу все результаты.

Спасибо за ваш совет.

1 Ответ

5 голосов
/ 22 июня 2011

Вы должны использовать подкласс UIViewController вместо UITableViewController для управления табличным представлением, если управляемое представление состоит из нескольких подпредставлений, одно из которых является табличным представлением.Вы можете добавить подпрограмму UITableView и заставить свой контроллер реализовывать протоколы UITableViewDelegate и UITableViewDataSource.

Стандартное поведение класса UITableViewController - заставить представление таблицы заполнять экран между панелью навигациии панель вкладок (если они есть).

С Руководство по программированию табличного представления для iOS :

Примечание: Вы должныиспользуйте подкласс UIViewController вместо подкласса UITableViewController для управления табличным представлением, если управляемое представление состоит из нескольких подпредставлений, одно из которых является табличным представлением.Поведение по умолчанию класса UITableViewController заключается в том, чтобы табличное представление заполняло экран между панелью навигации и панелью вкладок (если они есть).

Если вы решили использовать подкласс UIViewController, а не подклассUITableViewController для управления табличным представлением, вы должны выполнить пару задач, упомянутых выше, чтобы соответствовать рекомендациям по человеческому интерфейсу.Чтобы очистить любой выбор в табличном представлении перед его отображением, реализуйте метод viewWillAppear:, чтобы очистить выбранную строку (если есть), вызвав deselectRowAtIndexPath: animated :.После отображения табличного представления вы должны мигать индикаторами прокрутки в представлении прокрутки, отправив сообщение flashScrollIndicators в табличное представление;Вы можете сделать это в переопределении viewDidAppear: метод UIViewController.

...