我的 View Controller 是这样设置的,我的所有 UIView 都在 XIB 中,
@property (weak, nonatomic) IBOutlet UIView *tableHeader, *likesHeader, *commentsHeader, *followersHeader;
当 View 加载时,所有可见的节标题都正确显示,但一旦我滚动它们就会消失。我使用委托(delegate)方法来设置节标题。
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
if (section == 0) {
return self.tableHeader;
} else if (section == 1) {
return self.likesHeader;
} else if (section == 2) {
return self.commentsHeader;
} else if (section == 3) {
return self.followersHeader;
}
return nil;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
if (section == 0) {
return 120.0;
} else {
return 35.0;
}
}
我怎么搞砸了?
最佳答案
您可能需要将导出从 weak
更改为 strong
。
由于您的标题 View 不是作为父 View 的 subview 开始的,因此没有其他内容引用它们。因此,您的 weak outlets 将变为 nil,header views 将被释放。
您可能会成功返回最初可见的 header ,因为 nib 加载程序可能会将它们放入自动释放池中,直到 TableView 请求它们后才会被耗尽。当标题离开屏幕时, TableView 将释放它们。由于没有其他东西保留它们,因此它们被释放并且系统将您的弱导出设置为零。
关于ios - 如何使用作为 IBOutlet 连接的 UIView 作为 TableView 部分标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26124501/