나는이 문제에 관한 많은 게시물을 성공적으로 검토했습니다. 두 테이블보기 컨트롤러, 소스 및 대상 탐색 컨트롤러에서 모두 있습니다. 사용자가 소스 테이블 뷰 컨트롤러에서 셀을 탭하면 네트워크 속도에 따라 수 초가 걸릴 수있는 웹 서비스 호출을 만드는 객체가 인스턴스화됩니다. 이 웹 서비스 호출이 이루어지면 segue가 실행되고 탐색이 소스에서 대상으로 이동합니다. 이 웹 서비스 호출이 언제 표시되는지 알려주고 싶습니다. 지난 며칠 동안 노력한 것은 없으며,이 포럼에서 성공한 것으로 표시된 게시물조차도 효과가있었습니다. 테이블 뷰 컨트롤러 헤더UIActivityIndicatorView가 렌더링하지 않습니다.
출처 :
@property (strong, nonatomic) UIActivityIndicatorView *activityIndicator;
소스 테이블 뷰 컨트롤러 구현 :
@synthesize activityIndicator;
-(void)loadView {
[super loadView];
self.activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[self.view addSubview:self.activityIndicator];
self.activityIndicator.center = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2);
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
NSString *stateAbbr;
if([segue.identifier isEqualToString:@"sgShowStateDetail"]){
DetailTableViewController *detailVC = [segue destinationViewController];
NSIndexPath *path = [self.tableView indexPathForSelectedRow];
NSArray *tempArray = (NSArray*)[groupedStates objectAtIndex:path.section];
NSString *key = [tempArray objectAtIndex:path.row];
stateAbbr = [statesDict objectForKey:key];
[detailVC setStateIdentifier:stateAbbr];
// begin activity indicator here
[self.view bringSubviewToFront:activityIndicator];
[activityIndicator startAnimating];
gauges = [[GaugeList alloc] initWithStateIdentifier:stateAbbr andType:nil];
[activityIndicator stopAnimating];
[detailVC setStateGauges:gauges];
// end activity indicator here
}
}
GaugeList 객체입니다 그래서 뭔가 ... 여기까지 내 코드가 존재해야 웹 서비스 호출을 수행합니다.
활동 표시기가없는 것을 제외하고는 예상대로 작동합니다. 오류가 없습니다. 내가 도대체 뭘 잘못하고있는 겁니까? 감사!
보다는
tableView: didSelectRowAtIndexPath:
방법을 사용하여 코드는? 이 줄 이니? 게이지 = [[GaugeList alloc] initWithStateIdentifier : stateAbbr andType : nil]; – Pei예, 수정 된 원본 글은이를 반영합니다. 감사! –
그러면 prepareForSegue에서이를 수행하면 안됩니다. 또는 차단되고 UI가 전혀 새로 고쳐지지 않습니다. tableView : didSelectRowAtIndexPath : 메소드에 동일한 코드를 넣을 수 있습니다. – Pei