Tôi có một UITableViewController
. Tôi tạo ra một headerView tùy chỉnh cho nó tableView
trong phương pháp loadView
như vậy:Tiêu đề tùy chỉnh UITableView biến mất sau khi cảnh báo bộ nhớ
(void)loadView {
[super loadView];
UIView* containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, height * 2)];
containerView.tag = 'cont';
containerView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;
UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(padding, height, width, height);
... //configure UIButton and events
UIImageView* imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"] highlightedImage:[UIImage imageNamed:@"highlight.png"]];
imageView.frame = CGRectMake(0, 0, width, height);
... //configure UIImageView
[containerView addSubview:button];
[containerView addSubview:imageView];
self.tableView.tableHeaderView = containerView;
[imageView release];
[containerView release];
}
Không ai trong số các phương pháp khác (viewDidLoad/Unload, vv) đều quá tải.
Bộ điều khiển này được lưu trữ trong tab. Khi tôi chuyển sang tab khác và mô phỏng cảnh báo bộ nhớ, sau đó quay lại tab này, số UITableView
của tôi thiếu tiêu đề custon. Tất cả các hàng/phần được hiển thị như tôi mong đợi. Đặt một BP trong mã loadView
ở trên, tôi thấy nó được gọi khi tôi chuyển trở lại tab sau khi cảnh báo bộ nhớ, nhưng tôi thực sự không thể thấy tiêu đề.
Bất kỳ ý tưởng nào về những gì tôi thiếu ở đây?
CHỈNH SỬA: Điều này xảy ra trên thiết bị và trình mô phỏng. Trên thiết bị, tôi chỉ để cho một cảnh báo bộ nhớ xảy ra bằng cách mở một loạt các ứng dụng khác nhau trong khi tôi đang ở chế độ nền.
Tôi đoán bạn có mã trong chế độ xem của bạnDidUnload() như sau: self.tableView.tableHeaderView = nil; ? –
No. "Không có phương pháp nào khác (viewDidLoad/Unload, vv) bị quá tải". Tôi có cần nó không? Tại sao? – psychotik
Bối rối. Hy vọng người khác có thể giúp đỡ. –