我正在点击扩展UITableView单元。当单元格扩展时,我必须加载UIView。我的问题是我能够在几次看到UIView,有时它不会显示? UIView将被加载到每个扩展的单元格中。
扩展就像这样: -
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
CGFloat kExpandedCellHeight =300;
CGFloat normalCellHeight = 94;
if ([self.expandedCells containsObject:indexPath]) {
return kExpandedCellHeight;
}else{
return normalCellHeight;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *cellIdentifier = @"Cell";
ListCell *cell =(ListCell*) [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell==nil) {
NSArray *nibs = [[NSBundle mainBundle]loadNibNamed:@"ListCell" owner:self options:nil];
cell = nibs[0];
}
cell.Name.text = [[nameArray objectAtIndex:indexPath.row]valueForKey:@"opName"];
if (isExpanded) {
backgroundView = [[UIView alloc]initWithFrame:CGRectMake(0, 95, 320,205)];
[backgroundView setBackgroundColor:[UIColor colorWithRed:(235/255) green:(235/255) blue:(235/255) alpha:0.1]];
[cell.contentView addSubview:backgroundView];
container = [[UIView alloc]initWithFrame:CGRectMake(40, 67, 240, 120)];
container.backgroundColor = [UIColor whiteColor];
//I am adding buttons to this scrollview after webservice response,once buttons are loaded I am trying to load the above container on the background view.
container_scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(20, 5, 220, 110)];
[container_scrollView setBackgroundColor:[UIColor whiteColor]];
[container addSubview:container_scrollView];
}
return cell;
}
现在我收到来自webservice.Buttons的回复。但是我可以看到有时加载的容器视图,有时它没有显示。原因是什么?导致这种行为的原因是什么?
这是我将容器加载到背景视图的方式。
//After container is loaded with buttons.
if(backgroundView){
[backgroundView addsubView:container];
}
声明内容:
@interface ListViewController ()
{
UIView *backgroundView;//Used in expanded cell.
UIView *container;
BOOL isExpanded; //I set this to NO in viewDidLoad initially.
UIScrollView *container_scrollView;
}
答案 0 :(得分:0)
您应该考虑在故事板或两个xib文件上放置两个不同的单元格,每个单元格都有相应的单元标识符。一个是正常细胞,另一个是扩增细胞。然后,每当用户点击一个普通单元格时,您应该用您的第二个类型单元格(扩展单元格)替换该特定单元格(重绘)。
<强>更新强>
为了执行单元格的更新,您可以使用任何这些方法。 more here
reloadData
reloadRowsAtIndexPaths:withRowAnimation:
reloadSections:withRowAnimation:
这些将导致您的某些表视图数据源委托方法再次被调用,然后您应该使用一些逻辑来决定要绘制哪种类型的单元格。快速草稿:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellIdentifier;
// Here you should implement your custom logic to check if you want a basic or expanded cell.
if (IWantBasicCell) {
cellIdentifier = @"basicCell";
} else {
cellIdentifier = @"expandedCell"
}
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
[cell myCustomLoadInformationMethod:myCustomData];
return cell;
}