我有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个单元格看起来完全相同,但它们不应该是。
见下面的例子:
这是显示内容的屏幕截图: 这是应显示的NSLog数据 从这里,我们可以看到,由于某种原因,它显示了所有4个单元格,其中包含来自第3个单元格的数据。
此外,当我向下滚动表格视图然后再向上滚动时,WebView中的数据会再次更改。 例:
这可能是什么原因以及如何解决?