我有一个表格视图,列出了美国的所有州。当用户单击某个州时,会从 Web 服务调用中生成该州的河流水位计列表。该列表在另一个表视图控制器中呈现。我正在集成活动指示器以通知用户有网络活动。
我有一个对象(GuageList),它将仪表列表保存为可变数组。正是这个对象调用了 Web 服务并填充了数组。然后将该数组用作生成的表视图控制器中的数据源。我集成活动指示器的第一次尝试是将此对象的初始化放在显示状态仪表的目标表视图控制器中。但是,当我这样做时,我没有得到预期的结果。当点击一个状态时,会有一个长时间的停顿,然后显示包含仪表列表的表格视图,并在目标控制器中短暂呈现活动指示器。
接下来,我尝试将 GaugeList 对象的初始化放在初始表视图控制器(包含美国各州)中。我的想法是在那里初始化 GaugeList 对象,并将其传递给 segue。这产生了相同的结果。
源代码:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"sgShowStateRivers"]){
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Loading Rivers\nPlease wait..." message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:nil, nil];
[alert setOpaque:NO];
[alert show];
UIActivityIndicatorView *activityStatus = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(120, 230, 50, 50)];
activityStatus.center = CGPointMake(alert.bounds.size.width / 2, alert.bounds.size.height - 50);
[activityStatus startAnimating];
[alert addSubview:activityStatus];
RiversByStateTableViewController *riversVC = [segue destinationViewController];
NSIndexPath *path = [self.tableView indexPathForSelectedRow];
NSArray *tempArray = (NSArray*)[groupedStates objectAtIndex:path.section];
NSString *key = [tempArray objectAtIndex:path.row];
NSString *stateID = [statesDict objectForKey:key];
[riversVC setStateIdentifier:stateID];
GaugeList *stateGauges = [[GaugeList alloc] initWithStateIdentifier:stateID andType:nil];
[riversVC setStateGauges:stateGauges];
[activityStatus stopAnimating];
[alert dismissWithClickedButtonIndex:0 animated:YES];
}
}
在我的目的地,我只是使用 stateGauges 对象来填充表格。我的想法是 stateGauges 对象会在 segue 完成之前填充,但显然我不正确。
我究竟做错了什么?
谢谢!五