1

tableview我在通过检查当前单元格是否是最后一个单元格中添加了一个“加载更多”单元格。

但我有 2 种数据要显示,所以我用 aUISegmentedControl来切换。一旦在第一个选项卡UISegmentedControl,“加载更多”单元格出现在最后一个单元格。但是当我切换到第二个选项卡时UISegmentedControl。“加载更多”单元格仍然留在那里......并且仍然有一个“加载更多” .so的最后一个单元格tableview有 2 个“加载更多”单元格显示。

我想删除第一个“加载更多”单元格,但我不知道怎么做。谢谢。 在此处输入图像描述

编辑:

static NSString * ID = @"TopicCustomCellIdentifier";

    [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:ID];
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];        

    if(IS_LAST_TOPIC_ROW){
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
        if(cell == nil){
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
        }
        cell.textLabel.text = @"Load More";
        cell.textLabel.font = [UIFont systemFontOfSize:14];
        cell.textLabel.textAlignment = NSTextAlignmentCenter;
        cell.imageView.image = nil;                      
        return cell;
    }

    MTopicItem *topic;
    cell.textLabel.textAlignment = NSTextAlignmentLeft;
    if(SEGMENTINDEX == 0){
        topic = [_my_topics_data_array objectAtIndex:indexPath.row];
    }else{
        topic = [_rec_topics_data_array objectAtIndex:indexPath.row];
    }

    [cell.textLabel setText:topic.name];
    [cell.textLabel setFont:[UIFont systemFontOfSize:18]];        

    if(IS_RETINA){
        [cell.imageView setImageWithURL:[NSURL URLWithString: topic.image]
                                 placeholderImage:[UIImage imageNamed:@"default50"]];
    }else{
        [cell.imageView setImageWithURL:[NSURL URLWithString: topic.sImage]
                       placeholderImage:[UIImage imageNamed:@"default"]];        
    }
    topic = nil;
    return cell;


#define IS_LAST_TOPIC_ROW ((indexPath.row == [_my_topics_data_array count] - 1) && [_my_topics_data_array count] != 0) || ((indexPath.row == [_rec_topics_data_array count] - 1) && [_rec_topics_data_array count] != 0)

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if(SEGMENTINDEX == 0){
        return [_my_topics_data_array count];
    }else{
        return [_rec_topics_data_array count];
    }
}
4

6 回答 6

0

刚才,我突然得到了答案。我写 2 常数:

#define IS_LAST_MY_TOPIC_ROW (indexPath.row == [_my_topics_data_array count] - 1) && [_my_topics_data_array count] != 0

#define IS_LAST_REC_TOPIC_ROW (indexPath.row == [_rec_topics_data_array count] - 1) && [_rec_topics_data_array count] != 0

并在 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

if(SEGMENTINDEX == 0){
        if(IS_LAST_MY_TOPIC_ROW){
            cell.textLabel.text = @"Load More";
            cell.textLabel.font = [UIFont systemFontOfSize:14];
            cell.textLabel.textAlignment = NSTextAlignmentCenter;
            cell.imageView.image = nil;
            return cell;
        }

        topic = [_my_topics_data_array objectAtIndex:indexPath.row];
    }else{
        if(IS_LAST_REC_TOPIC_ROW){
            cell.textLabel.text = @"加载更多";
            cell.textLabel.font = [UIFont systemFontOfSize:14];
            cell.textLabel.textAlignment = NSTextAlignmentCenter;
            cell.imageView.image = nil;
            return cell;
        }
        topic = [_rec_topics_data_array objectAtIndex:indexPath.row];
    }
于 2013-05-31T07:45:26.900 回答
0

使用 reloadData 刷新段触摸视图。

[myTableView reloadData];
于 2013-05-30T09:23:33.153 回答
0

如果您手动添加一行,您也可以手动删除该行:

deleteRowsAtIndexPaths:withRowAnimation:

这里

于 2013-05-30T09:25:58.097 回答
0

检查最后一个单元格文本标签是否加载更多,不要在第二个控件中添加。

于 2013-05-30T09:31:47.837 回答
0
  • 保留一个布尔值以确保何时显示单元格。
  • 在方法中添加 loadmore 单元之前检查它cellForRowAtIndexpath
  • numberOfRowsInSection应该使用相同的布尔值来维护。
  • 当您单击loadmore cellset boolean to no 然后重新加载表时

它看起来如何

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
  if(showLoadMore)
  {
    if(IS_LAST_TOPIC_ROW){
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
        if(cell == nil){
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
        }
        cell.textLabel.text = @"Load More";
        cell.textLabel.font = [UIFont systemFontOfSize:14];
        cell.textLabel.textAlignment = NSTextAlignmentCenter;
        cell.imageView.image = nil;                      
        return cell;
    }
  }

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

  if(showLoadMore{
     return [_my_topics_data_array count]+1;
  }
  else
  {
     return [_my_topics_data_array count];
  }
}
于 2013-05-30T09:55:14.203 回答
0

这是由于细胞的重复使用而发生的。当您从 tableview 中提取一个单元格时,检查它是否不是nil并重置内容。

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
if(cell) {
    cell.textLabel.text=@"";
    cell.imageView.image=nil;
}

还要交叉检查是否IS_LAST_TOPIC_ROW正确识别最后一行。

希望有帮助。

于 2013-05-30T10:20:39.720 回答