我有TabViewController
2 个标签,第一个标签是我的Homescreen
. 当我打开我的应用程序并且第一个选项卡显示它调用API
.
API 调用
_loadingHistory = ([(AppDelegate *)[[UIApplication sharedApplication] delegate] updateInprogress]);
if(([NetworkConnectivity hasConnection]) && ([(AppDelegate *)[[UIApplication sharedApplication] delegate] datasourceUpdateRequired]) && !([(AppDelegate *)[[UIApplication sharedApplication] delegate] updateInprogress]))
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
_loadingHistory = YES;
[(AppDelegate *)[[UIApplication sharedApplication] delegate] setUpdateInprogress:YES];
[self startOperationsForReferenceList];
GetMostRecentEnquiryController *getRecent = [[GetMostRecentEnquiryController alloc] initWithPelicanId:[[NSUserDefaults standardUserDefaults] valueForKey:needId] NumberOfItems:100 Delegate:self];
[getRecent fetchMostRecentData];
if (!self.loadingHistory) {
[self loadMostRecentHistory];
}
});
} else {
if (!self.loadingHistory) {
[self loadMostRecentHistory];
}
}
我有一个MutableArray
会收到API
. 假设在API
调用之后,它必须将一组值返回给我并放在MutableArray
我创建的。在我的第一个标签中,它运行良好。第二个选项卡的作用与它所称的相同API
。
但是,当我启动屏幕(显示第一个选项卡)时,立即单击第二个选项卡(当第一个选项卡正在加载时,这意味着API
尚未完成),第二个选项卡将永远加载。但是当我再次单击第一个选项卡并返回到第二个选项卡时,详细信息就在那里。
获取最近的数据方法
if(![NetworkConnectivity hasConnection]) return;
ShowNetworkActivityIndicator();
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"www.URI.com"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:[NSString stringWithFormat:@"%d",[self numberOfHistoryItems]] forKey:@"numbertofetch"];
[request setPostValue:[self neededId] forKey:@"neededId"];
[request setPostValue:@"commencement" forKey:@"sortby"];
[request setDelegate:self];
[request startSynchronous];
if(request.responseStatusCode == 200)
{
[self.listOfAllItems removeAllObjects];
[self.listOfFutureItems removeAllObjects];
[self clearDatabase];
NSData *jsonData = [request responseData];
id result = [jsonData objectFromJSONData];
HelloGetMostRecentEnquiries *userBase = [[HelloGetMostRecentEnquiries alloc] initWithDictionary:result];
if([userBase isSuccess])
{
for (int i=0; i < userBase.enquiries.count; i++)
{
HelloEnquiries *enq = [[userBase enquiries] objectAtIndex:i];
[self saveItemsToDatabase:enq];
}
}
[(NSObject *)self.delegate performSelectorOnMainThread:@selector(finishedGetMostRecent:) withObject:self waitUntilDone:NO];
HideNetworkActivityIndicator();
}
else
{
HideNetworkActivityIndicator();
}