2011-08-03 7 views
0

테이블 뷰가 있고 사용자가 행을 누를 때마다 다른 클래스 뷰가 표시됩니다. 그래서 전환 사이에 로딩 표시기가 있어야합니다. MBProgressHUD를 사용하고 있지만 행을 누를 때 아무 것도 표시되지 않습니다. 그리고 @selector() 안에 무엇을 넣어야합니까?MBProgressHUD 활동 표시기를 사용하여

로드 중 showWhileExecuting : @selector() onTarget : self withObject : [NSNumber numberWithInt : i] animated : YES];

여기 내 코드입니다.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

loading = [[MBProgressHUD alloc] initWithView:self.view]; 

[self.view addSubview:loading]; 

loading.delegate = self; 

loading.labelText = @"Loading Events, Please Wait.."; 

[loading showWhileExecuting:@selector(//what should I put) onTarget:self withObject:nil animated:YES]; 

[tableView deselectRowAtIndexPath:indexPath animated:YES]; 


    if ([[self.citiesArray objectAtIndex:indexPath.row] isEqual:@"NEW YORK"]) 
    { 
      self.newYorkViewController = [[NewYorkViewController alloc] initWithNibName:@"NewYorkViewController" bundle:nil]; 
       Twangoo_AppAppDelegate *delegate = (Twangoo_AppAppDelegate*)[[UIApplication sharedApplication] delegate]; 
      [delegate.citiesNavController pushViewController:self.newYorkViewController animated:YES]; 
     } 

} 

답변

0

대기중인 기능을 구현해야 해당 컨트롤에서 컨트롤이 반환 될 때 HUD가 화면에서 숨겨 지거나 사라지게됩니다. 기본적으로 HUD가 화면에 표시 될 때 수행하는 작업이므로 http 요청 등에 대한 응답을 기다리는 처리가 될 수 있습니다. 또한 타이머 일 수도 있습니다.

- (void)waitForResponse 
{ 
    while (/*Some condition is not met*/) 
    { 

    } 
} 

은 또한 당신은 당신은 단순히 함수에 대한 포인터로 볼 수 있습니다 Cocoa documentation chapter on selectors

셀렉터에 모습을 가질 수있는

- (void) hudWasHidden 
{ 
    [HUD removeFromSuperview]; 
    [HUD release]; 
} 
+0

감사합니다.하지만 대기 함수가 MBProgressHUD 인 didSelectRowAtIndexPath라고 생각합니다. – kevin

+0

아니요, 대기 기능은 HUD가 표시되기를 원하는 한 실행됩니다. HUD가 화면에서 사라지면 대기 기능이 실행됩니다. –

+0

나는 대기 방법에서 (참) {} (연속적으로 반복)하는 동안 그냥 할 것입니다; 푸시 subview 호출 후 hudWasHidden 넣어. – kevin

0

를 구현해야합니다.

그런 다음 특정 프로세스가 실행되는 동안 진행 상황을 표시하려고합니다.이 특정 프로세스는 논리적으로 전용 메소드 (doTheJob이라고 부름)로 격리되어야합니다.

  • 는 그래서 MBProgressHUD는 단순히 사용하여 진행 정보에 의해 처리되어야하는 작업 방법을 지정할 수 있습니다 말했다되고 그게 무엇이든 (여기 doTheJob를)라는 이름의 전용 방법

    - (void) doTheJob; 
    
  • 를 작성하여 시작 showWhileExecuting 메서드. 선택기는 대상 작업자 방법을 정의하는 데 사용됩니다.

    [loading showWhileExecuting:@selector(doTheJob) onTarget:self withObject:nil animated:YES]; 
    
  • 대상은 선택기를 정의하는 개체 참조입니다. 간단히 말하면, 현재 클래스에서 doTheJob 메소드를 정의하면 self as target을 사용하십시오.

  • 및 withObject는 선택기 메서드에 제공하려는/원하는 모든 매개 변수입니다. 대상 메소드에 매개 변수를 제공해야하는 경우가 @selector로 뒤에 콜론 (doTheJob :)이 도움이

희망과 선택의 정의를 확장 할 필요가 조심하십시오.

+0

고마워, 내 안에 무엇을 넣어야합니까?newYorkViewController = [[NewYorkViewController alloc] initWithNibName : @ "NewYorkViewController"번들 : nil]; Twangoo_AppAppDelegate * delegate = (Twangoo_AppAppDelegate *) [[UIApplication sharedApplication] delegate]; [delegate.citiesNavController pushViewController : self.newYorkViewController animated : YES]; – kevin

+0

이것이 HUD 디스플레이에서 실행하고자하는 코드라면 예 (첫 번째 샘플에있는 것처럼 보이지만)는 if 문과 deselect 문을 포함하는 것을 잊지 마십시오. if 문을 먼저 수행 한 다음 올바른 셀에 있는지 확인한 후 showWhileLoading 메서드를 호출 할 수도 있습니다.이 작업은 달성하려는 대상에 따라 다릅니다. 그럼 행운을 비네. –

관련 문제