如何使用UIView连接为IBOutlet作为表视图节标题?

时间:2014-09-30 15:23:32

标签: ios objective-c uiview

我的视图控制器设置如此,所有我的UIViews都在XIB中,

@property (weak, nonatomic) IBOutlet UIView *tableHeader, *likesHeader, *commentsHeader, *followersHeader;

当视图加载时,所有可见的节标题都会正确显示,但是一旦我滚动它们就会消失。我使用委托方法来设置节标题。

- (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;
    }
}

我是如何搞砸的?

2 个答案:

答案 0 :(得分:1)

您可能需要将商家从weak更改为strong

由于您的标题视图不是以超级视图的子视图开头,因此没有其他任何内容可以引用它们。因此,您的弱出口将变为零,并且标题视图将被取消分配。

您可能会成功返回最初可见的标头,因为nib加载器可能会将它们放入自动释放池中,直到表视图请求它们之后才会将其排出。当标题离开屏幕时,表格视图会释放它们。由于没有别的东西保留它们,它们被解除分配,系统将你的弱点设置为零。

答案 1 :(得分:0)

将声明从weak更改为strong