我通过完成方法接收数据异步。
完成触发后,我将数据传递给新的tableviewcontroller
。
但是表视图控制器需要花费太多时间来加载。数据是一个包含多达25个对象的数组。所以没那么多。
要移动到新控制器,我使用在storyboard
中创建的segue。
这是完成方法:
{
if(receivedArray != nil)
{
searchResult = receivedArray;
[self performSegueWithIdentifier:@"searchToDisplay" sender:self];
}
}
当我调试并设置断点到prepareForSegue:sender:
方法时,我会在不到一秒的时间内到达那里。
这里的方法:
if([segue.identifier isEqualToString:@"searchToDisplay"])
{
BookingDisplayTableViewController *bookingVC = (BookingDisplayTableViewController *)segue.destinationViewController;
bookingVC.bookings = [NSArray arrayWithArray:searchResult];
}
另外这里是BookingDisplayController的viewDidLoad方法。 viewWillAppear没有被覆盖。
- (void)viewDidLoad
{
[super viewDidLoad];
UINib *nib = [UINib nibWithNibName:@"BookingCellDesign" bundle:nil];
[self.tableView registerNib:nib forCellReuseIdentifier:@"BookingCell"];
self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tableBackground.png"]];
self.clearsSelectionOnViewWillAppear = NO;
}
我在这里无法解决性能问题......
我需要帮助。 :)
谢谢!
更新
所以我解决了这个问题。这是完成方法。
我通过dispatch_async获取了日期(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0)...和同步的NSMutableRequest。
我发送完成后发送同步请求。现在我将此代码放在dispath块中
dispatch_async(dispatch_get_main_queue(),
^{
if(response)
{
[self removeLoadingView];
if(bookingTemp.count > 0)
completion(bookingTemp);
else
completion(nil);
}
});
现在效果很好。
在我这样做之前我不明白,我调试并像现在一样到达完成块。但只有segue没有开始。
感谢您的帮助!