Tableview 中印地语的滞后问题

Posted

技术标签:

【中文标题】Tableview 中印地语的滞后问题【英文标题】:Lagging Issue in Hindi Language in Tableview 【发布时间】:2016-06-11 13:47:23 【问题描述】:

我在 Tableview 中有很多标签和印地语文本。 印地语文本通过 php Web 服务获取。但是在tableview中落后太多了。 滚动不流畅。忍受这么多的挂起和滞后。

这是我的cellForRowAtIndexPath 和文本转换为可读格式的代码:

- (UITableViewCell *)tableView:(UITableView *)tableview cellForRowAtIndexPath:(NSIndexPath *)indexPath
    NSString *cellIdentifier;
    GroupPost *post=(GroupPost*)[[arrMsg objectAtIndex:indexPath.section]objectAtIndex:indexPath.row];
    if([post.postType isEqualToString:@"0"])
        cellIdentifier=@"GroupDetailCustomeCellTextOnly";
    

    /////////Text Convert in URLDecode and get readble text....

    NSString *unicode=[[post.postContent URLDecode] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

     cell.lblPostContent.text =unicode;

     return cell;


//This Function Use For URLDecode....
- (NSString *)URLDecode 
    return [self URLDecodeUsingEncoding:NSUTF8StringEncoding];


- (NSString *)URLDecodeUsingEncoding:(NSStringEncoding)encoding 
    return (__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL,
                                             (__bridge CFStringRef)self,
                                             CFSTR(""),
                                             CFStringConvertNSStringEncodingToEncoding(encoding));

请指导我如何使滚动非常顺畅,并从我的 Tableview 中消除挂起和滞后问题。

【问题讨论】:

在表格视图加载之前。从您的网络服务中创建一个完整的数组,并为数据源使用后台队列!还在主线程更新 UI ......可能它工作顺利。 @Pushp 贴一些代码..plz 你在哪里创建你的UITableViewCell?把那个代码sn-p。 @DipenPanchasara in view didLoad==> [tblViewList registerNib:[UINib nibWithNibName:@"GroupDetailCustomeCellTextOnly" bundle:nil] forCellReuseIdentifier:@"GroupDetailCustomeCellTextOnly"]; 它唯一的注册单元。你在哪里初始化你的细胞? 【参考方案1】:
dispatch_queue_t myQueue = dispatch_queue_create("My Queue",NULL);
dispatch_async(myQueue, ^
    // Perform long running process
    NSMutableArray *unicodeArray = [[NSMutableArray alloc] init];
    for (i = 0; i < arrMsg.count ; i++)
    
        GroupPost *post=(GroupPost*)[arrMsg objectAtIndex:i];
        NSString *unicode=[[post.postContent URLDecode] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

        [unicodeArray addObject:unicode];
    
);

使用 unicode 数组作为数据源。试试让我知道发生了什么。将此代码放在 viewDidLoad

dispatch_async(dispatch_get_main_queue(), ^
        [tableView reload]
    );

将此代码放在 viewDidAppear

【讨论】:

错误进入主线程块=>没有可见的@interface for 'UITableView' 声明选择器重新加载 我在标签中设置我的值,例如,=> cell.lblPostContent.text =unicode; 你在 cellforrowatindex 路径中改变了你的值 like ==>cell.lblPostContent.text =[unicodeArray objectAtIndex:indexPath.row]; ???

以上是关于Tableview 中印地语的滞后问题的主要内容,如果未能解决你的问题,请参考以下文章

Swift Json Tableview 滞后

webView导致tableview滞后

TableView 滞后太多,占用太多内存 Swift

在 tableview 单元格中显示图像

Snapkit:如何在 scrollView 中嵌入一个简单的 tableView?

NSFetchedResultsController - TableView 中的 UI 更新不完整