Những gì bạn cần là một thường lệ UITableViewController
(vì vậy bạn nhận được tất cả hành vi ô tĩnh) và sau đó là chế độ xem con của chế độ xem bảng, nhưng được quản lý sao cho luôn luôn ở cuối màn hình. Apple đã chứng minh điều này như WWDC. Đây là những gì tôi làm (trong ví dụ của tôi, tôi có một số UIDatePicker
mà tôi luôn muốn neo ở dưới cùng):
Trong viewDidLoad
, tạo chế độ xem của bạn và thêm nó làm chế độ xem phụ của chế độ xem bảng. Đặt nó ở dưới cùng của bảng xem.
[self.tableView addSubview:self.datePicker];
[self updateDatePickerBounds];
Thực hiện scrollViewDidScroll
để bạn có thể buộc cái nhìn của bạn vào dưới cùng của màn hình bao giờ hết thời gian xem bảng cuộn:
- (void) scrollViewDidScroll:(UIScrollView *)scrollView
{
// Keep the date picker floating above the table view, anchored to the bottom of the view
[self updateDatePickerBounds];
}
Và sau đó thực hiện một chức năng mà vị trí quan điểm của bạn một cách chính xác:
- (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;
}
Cuối cùng, nếu bạn không muốn xem bảng dưới chế độ xem dưới cùng của mình, chỉ cần đặt chế độ xem bảng là contentInset
để khớp với tám quan điểm của bạn.
Tôi cũng gọi phương thức updateDatePickerBounds
của mình từ viewWillAppear
. Tôi quên lý do tại sao tôi phải làm điều đó.
Nguồn
2012-09-04 21:54:46
Chân trang chỉ hiển thị khi bạn ở dưới cùng của bảng, đúng không? Tôi cần chế độ xem này luôn hiển thị. – lnafziger
Giải pháp tuyệt vời! Bạn có thể thêm một UIView bình thường trước hoặc sau một phần xem bảng mà về cơ bản giống như tích hợp nó theo cách khác và nó thực sự hoạt động. –