来自xib的可重用标头

时间:2013-02-27 13:17:26

标签: objective-c uitableview

我使用可重用的标头创建表视图。当我从xib加载它时,标题会发生奇怪的事情

- (UIView*)dequeueReusableHeaderView
{
    NSInteger indexAvailableView = [reusableHeaders indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop)
    { return  [obj superview] == nil; }];

    return (indexAvailableView != NSNotFound)? reusableHeaders[indexAvailableView] : nil;
}

- (void)enqueueReusableView:(UIView*)headerView
{
    [reusableHeaders addObject:headerView];
}

-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section
{
    BGDiaryHeader *header = (BGDiaryHeader*)[self dequeueReusableHeaderView];
    if (!header) {
        UINib *headerNib = [UINib nibWithNibName:@"BGDiaryHeader_iPhone" bundle:nil];
        NSArray *aNib = [headerNib instantiateWithOwner:self options:nil];
        BGDiaryHeader *header = [aNib objectAtIndex:0];

    //if simple [[_ alloc]init] all works fine
    //    header = [[BGDiaryHeader alloc] init];
        [self enqueueReusableView:header];
    }
    //set display data
    return header;
}

如果我在代码中创建标题视图,一切正常

1 个答案:

答案 0 :(得分:0)

如果块

标题中被遮挡
-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section
{
    BGDiaryHeader *header = (BGDiaryHeader*)[self dequeueReusableHeaderView];
    if (!header) {
        UINib *headerNib = [UINib nibWithNibName:@"BGDiaryHeader_iPhone" bundle:nil];
        NSArray *aNib = [headerNib instantiateWithOwner:self options:nil];
        header = [aNib objectAtIndex:0];

        [self enqueueReusableView:header];
    }
    //set display data
    return header;
}