为什么带有WebView的TableView加载奇怪(数组中的每个第3个对象)

时间:2014-09-16 11:04:41

标签: ios uitableview webview

我有UITableView和UIWebView。

在加载UITableView之前,我在另一个线程上获取了一些JSON

-(void)fetchJson
{
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
    NSString* url = ...
    NSData* theData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url]];
    @try {
        NSError *error;

        NSMutableArray* json = [NSJSONSerialization
                                JSONObjectWithData:theData
                                options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves
                                error:&error];

        if (error){
            NSLog(@"%@",[error localizedDescription]);
            NSLog(@"if");
        }
        else{
            ...
                // here I fetch a string which holdshtml and MathML data in it.
                NSString *eq_text = [question objectForKey:@"eq_text"];
                stq.question = eq_text;

            ...

        }
    }
    @catch (NSException *exception) {
        NSLog(@"Exception");
    }
    dispatch_async(dispatch_get_main_queue(), ^{
        _counter = _questionsArray.count;
        [_tableView reloadData];

    });

});

这就是我对WebView的加载请求

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

...
[cell.webView loadRequest:[self readMathMlString:question.question]];
...
return cell;

}

使用方法[self readMathMlString:eq_text],我创建了NSUrlRequest。我有一些MathJax我需要在WebView中显示,我必须以这种方式显示

-(NSURLRequest*)readMathMlString:(NSString*)content{

NSString *tmpFileName = @"test1.html";

//temp dir
NSString *tempDir = NSTemporaryDirectory();

//create NSURL
NSString *path4 = [tempDir stringByAppendingPathComponent:tmpFileName];
NSURL* url = [NSURL fileURLWithPath:path4];

//setup HTML file contents
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"MathJax" ofType:@"js" inDirectory:@"MathJax-2.2-latest"];

//write to temp file "tempDir/tmpFileName", set MathJax JavaScript to use "filePath" as directory, add "xContent" as content of HTML file
[self writeStringToFile:tempDir fileName:tmpFileName pathName:filePath content:content];

NSURLRequest* req = [[NSURLRequest alloc] initWithURL:url];

//original request to show MathJax stuffs
//[myWebView loadRequest:req];

return req;
}

所以,问题是,由于某种原因,数据以奇怪的顺序显示。 当视图第一次打开时,应用程序显示前4个单元格看起来完全相同,但它们不应该是。

见下面的例子:

This is the screenshot of what it's shown This is what it should be shown

这是显示内容的屏幕截图: 这是应显示的NSLog数据 从这里,我们可以看到,由于某种原因,它显示了所有4个单元格,其中包含来自第3个单元格的数据。

此外,当我向下滚动表格视图然后再向上滚动时,WebView中的数据会再次更改。 例: enter image description here

这可能是什么原因以及如何解决?

0 个答案:

没有答案