iOS,使用InsertRowsAndExpaths在UITableView中延迟显示:WithRowsAnimation:
我有一个自定义的iOS,使用InsertRowsAndExpaths在UITableView中延迟显示:WithRowsAnimation:,uitableview,nsoperationqueue,Uitableview,Nsoperationqueue,我有一个自定义的NSObject类,做一些FTP工作(显示、传输…) 这个FTP类有一个downloadFiles:方法,它在NSOperationQueue中启动 我希望该方法能够在UITableView中作为数据源提供一些结果。因此,我决定将这些结果委托给UITableViewController 因此,FTP类的协议: @protocol FTPDelegate; 然后,我将自定义UITableViewController声明为FTP类的委托: self.myFTP = (FTP *)
NSObject
类,做一些FTP工作(显示、传输…)
这个FTP类有一个downloadFiles:
方法,它在NSOperationQueue
中启动
我希望该方法能够在UITableView
中作为数据源提供一些结果。因此,我决定将这些结果委托给UITableViewController
因此,FTP类的协议:
@protocol FTPDelegate;
然后,我将自定义UITableViewController
声明为FTP类的委托:
self.myFTP = (FTP *) [self FTPManager];
self.myFTP.delegate = self;
因此,当FTP类的downloadFiles:方法想要在UITableView
中显示一些消息时,它调用:
[[self delegate] FTPMessageReceived:@"dir created"];
UITableViewController
实现该方法:
-(void)FTPMessageReceived: (NSString *)message {
NSUInteger index;
NSArray * indexArray;
[[self logLine] addObject: message]; // logLine is my data source
index = [[self logLine] count]-1;
NSLog(@"%u", index);
indexArray = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:index inSection:0]];
[[self logView] insertRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationRight];
}
插入可以工作,但是新行需要大约5秒钟才能显示在UITableView
当我在tableView:cellforrowatinexpath:
方法中放入一些日志时,它会立即显示出来
当我将FTPMessageReceived
代码放入按钮(例如,UITableView
立即显示新行
有什么建议吗?听起来像是在后台线程上调用了
FTPMessageReceived:
。尝试使用以下命令在主线程上调用它:
dispatch_async(dispatch_get_main_queue(), ^{
[[self delegate] FTPMessageReceived:@"dir created"];
});
听起来像是在后台线程上调用了
FTPMessageReceived:
。尝试使用以下命令在主线程上调用它:
dispatch_async(dispatch_get_main_queue(), ^{
[[self delegate] FTPMessageReceived:@"dir created"];
});
dispatch_async(dispatch_get_main_queue(), ^{
[[self delegate] FTPMessageReceived:@"dir created"];
});