2016-12-06 3 views
0
-(void)didTapAudioButton:(UIButton*)sender { 
    [tableView reloadData]; 
    UIButton* senderButton = (UIButton*)sender; 
    NSUInteger index = sender.tag; 
    NSString *audioFilePath = @"someAudioFilePath.mp3";// I didn't add the original audiofile path for security reasons 
    NSData *_objectData = [NSData dataWithContentsOfURL:[NSURL URLWithString:audioFilePath]]; 
    NSError *error; 
    audioPlayer = [[AVAudioPlayer alloc] initWithData:_objectData error:&error]; 
    audioPlayer.delegate = self; 
    audioPlayer.numberOfLoops = 0; 
    if (audioPlayer == nil) 
     { 
      NSLog([error description]); 
     } 
     else 
     { 
      [audioPlayer play]; 
     } 
    } 

이 함수를 사용하면 URL 문자열 경로에서 버튼 클릭시 오디오 파일을 재생할 수 있습니다. 오디오가 잘 재생되고 있지만 문제는 [tableView reloadData] 함수가이 함수의 끝에서 호출된다는 것입니다. tableView가 주먹을 다시로드 한 다음 다음 줄로 이동하려합니다. 즉, UIButton * senderButton = (UIButton *) sender; 아무도 내게 오디오를 재생하기 전에 tableview를 다시로드하는 방법을 말해 줄 수 있습니까? 모든 종류의 도움을 주시면 감사하겠습니다. 감사. 메소드가 완료 될 때까지다른 함수보다 먼저 UITableView reload 함수를 호출하십시오.

[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES]; 
[self.tableView layoutIfNeeded]; 

그것은 대기 :

+0

메인 스레드에서이 방법을 사용할 수 있습니까? –

+0

죄송합니다. 질문을 이해할 수 없습니다. 이 함수는 뷰 내의 버튼을 클릭 할 때 호출됩니다. 함수의 첫 번째 줄을보십시오. tableview reloadData를 호출하여 tableView를 다시로드합니다. 버튼을 클릭 할 때마다 오디오 파일을 재생하기 전에이 작업을 수행하려고합니다. 하지만 버튼을 클릭하면 먼저 전체 함수를 살펴본 다음 끝에 tableView reloadData를 호출합니다. 당신이 내 질문을 이해하기를 바랍니다. D. – Naqi

답변

0

나는 다음 줄을 사용하십시오.

+0

작동하지 않습니다. 실제로 문제는 처음에 UITableView의 델리게이트 함수를 리로드 데이터에 호출하지 않는다는 것입니다. 이 기능을 확인하기 위해 중단 점을 사용하고 있습니다. 단추를 처음 클릭하면이 단추 이벤트의 모든 코드를 살펴본 다음 끝에는 cellForRowAtIndex 및 UITableView의 다른 대리자 함수를 호출합니다. – Naqi

+0

오디오 파일을 재생하는 버튼은 UITableViewCell 안에 있습니다. 이 코드 줄을 클릭하면 이벤트를 호출하는 데 사용하고 있습니다. [((QuestionReplyCell *) 셀) .btnQuestionVoice addTarget : 자체 액션 : @selector (didTapAudioButton :) forControlEvents : UIControlEventTouchUpInside]; – Naqi

+0

버튼을 클릭하면이 tableView를 먼저 다시로드 한 다음 audioFile을 재생하려고합니다. 나는 각각의 질문에 오디오 파일을 재생하는 오디오 버튼이있는 tableview의 질문 목록을 가지고있다. 오디오가 재생 중일 때 버튼의 이미지도 변경됩니다. 그 이유는 먼저 tableview 다시로드하고 선택한 단추의 이미지를 변경하려면. 당신이 뭘하려고하는지 이해하길 바래. 도와 주셔서 감사합니다. :) – Naqi

관련 문제