То, что вам нужно, это обычный UITableViewController
(чтобы вы получили все статическое поведение ячейки), а затем ваше представление как подпредставление табличного представления, но управляемое так, что оно всегда прилипает к нижней части экрана. Apple продемонстрировала это как WWDC. Вот что я делаю (в моем примере у меня есть UIDatePicker
, который я всегда хочу закрепить внизу):
В viewDidLoad
создайте представление и добавьте его в качестве подпредставления представления таблицы. Поместите его внизу таблицы.
[self.tableView addSubview:self.datePicker];
[self updateDatePickerBounds];
Реализуйте scrollViewDidScroll
, чтобы вы могли переместить свое представление в нижнюю часть экрана при каждом прокрутке представления таблицы:
- (void) scrollViewDidScroll:(UIScrollView *)scrollView
{
// Keep the date picker floating above the table view, anchored to the bottom of the view
[self updateDatePickerBounds];
}
А затем реализуйте функцию, которая правильно позиционирует ваш взгляд:
- (void) updateDatePickerBounds
{
// Keep the date picker floating above the table view, anchored at the bottom
CGRect tableBounds = self.tableView.bounds;
CGRect pickerFrame = self.datePicker.frame;
pickerFrame = CGRectMake(tableBounds.origin.x,
tableBounds.origin.y + CGRectGetHeight(tableBounds) - CGRectGetHeight(pickerFrame),
tableBounds.size.width,
pickerFrame.size.height);
self.datePicker.frame = pickerFrame;
}
Наконец, если вы не хотите, чтобы ваш табличный вид проходил под вашим нижним видом, просто установите contentInset
табличного представления, чтобы соответствовать высоте вашего вида.
Я также вызываю свой метод updateDatePickerBounds
из viewWillAppear
. Я забыл, почему я должен был это сделать.