以 UIView 作为子视图创建的表格单元格在 iOS7 中不显示

Posted

技术标签:

【中文标题】以 UIView 作为子视图创建的表格单元格在 iOS7 中不显示【英文标题】:Created Table Cell With UIView as subview Not Displaying in iOS7 【发布时间】:2014-03-20 06:14:18 【问题描述】:

我在 UITable Cell 上创建了 UIView,但它没有在 ios7 中显示,这在 iOS6 中运行良好。请给我解决方案。

我们将在表格末尾添加更多按钮。

添加相同的代码:

UIView *footerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 768, 40)];
footerView.backgroundColor  = [UIColor grayColor];
UIButton *btnLoadMore = [UIButton buttonWithType:UIButtonTypeCustom];
btnLoadMore.frame = CGRectMake(-10, 0, 768, 30);
btnLoadMore.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth;
[btnLoadMore setTitle:@"Sample" forState:UIControlStateNormal];
[btnLoadMore setBackgroundColor:[UIColor redColor]];
[btnLoadMore setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btnLoadMore addTarget:self action:@selector(loadMore) forControlEvents:UIControlEventTouchUpInside];
btnLoadMore.userInteractionEnabled=YES;
[btnLoadMore.titleLabel setFont:[UIFont fontWithName:@"Helvetica" size:17.0]];
[footerView addSubview:btnLoadMore];
 [footerView setHidden:YES];
[footerView setTag:999];
[cell addSubview: footerView];
for (id subView in [cell subviews]) 
        [subView setHidden:NO];
       
    UIView *lastRow = [cell viewWithTag:999];
    [lastRow setHidden:YES];

    if(indexPath.section == [arSearch count] && isLoadMore)
        for (id subView in [cell subviews]) 
            [subView setHidden:YES];
        
        cell.backgroundView = nil;
        [lastRow setHidden:NO];

【问题讨论】:

【参考方案1】:

检查您的代码。为什么你写下一行:

     [footerView setHidden:YES];

我认为您正在从单元格中隐藏视图。

【讨论】:

但我已经按照逻辑为页脚视图隐藏了 no 并且它在 iOS6 中工作 @Warrior 检查您显示的代码并从中删除此行:[footerView setHidden:YES]; @Warrior 我检查了你的代码。我不明白你为什么隐藏视图而不是通过条件显示它。但至少尝试一次,删除该行。【参考方案2】:

代替

[cell addSubview: footerView];

使用

[cell.contentView addSubview: footerView];

同时删除

[footerView setHidden:YES];

为了加载更多,我总是在下面做。

UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 65)];
v.backgroundColor = [UIColor clearColor];

    int mySiz = 0;
    // keep counter how many times load more is pressed.. initial is 0 (this is like index)
    mySiz = [startNumberLabel.text intValue]+1;

    // i have 15 bcz my index size is 15.
if ([feeds count]>=(15*mySiz)) 
    NSLog(@"showing button...");
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setFrame:CGRectMake(10, 10, 296, 45)];
    [button setBackgroundImage:[UIImage imageNamed:localize(@"loadmore")] forState:UIControlStateNormal];
    [button addTarget:self action:@selector(loadMoreData:) forControlEvents:UIControlEventTouchUpInside];
    [v addSubview:button];
    mainTableView.tableFooterView = v;
 else 
    mainTableView.tableFooterView = nil;



[mainTableView reloadData];

【讨论】:

以上是关于以 UIView 作为子视图创建的表格单元格在 iOS7 中不显示的主要内容,如果未能解决你的问题,请参考以下文章

uiview 作为包含 uitableview 的子视图

为啥我的 UITableView 单元格在滚动时重叠?

动态表格视图单元格,以编程方式更改子视图高度

添加表格视图单元格在 iOS 中不起作用?

使用子视图重用单元格(以编程方式)

表格视图单元格在整数格式时不显示数据