2

UITableViewController가있는 탐색 컨트롤러가 있습니다.UISearchController에서 unwind segue를 사용할 때의 오류

사용자가 TableViewController에서 셀을 선택하면 테이블 뷰가있는 새 뷰 컨트롤러로 푸시됩니다. 그런 다음 사용자가 셀을 선택하면 데이터가 unwind segue를 통해 다시 전달됩니다.

셀을 선택하기 전에 검색 창을 사용할 때이 오류가 발생합니다. 여기에 콘솔의 말씀입니다 : 내가에서 을 풀기 해요보기 컨트롤러에서

popToViewController:transition: called on <UINavigationController 0x7fc8ab856e00> while an existing transition or presentation is occurring; the navigation stack will not be updated. 

코드 : 여기

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     tableView.deselectRow(at: indexPath, animated: true) 
     let cell = tableView.cellForRow(at: indexPath) as! MonsterSpriteCell 
     let monster = monsters[indexPath.row] 
     selectedMonster = monster 
     if isTeamBuilding { 
      // **ERROR OCCURS HERE** 
      performSegue(withIdentifier: "saveToTeamBuilderTableVC", sender: cell) 
     } else { 
      performSegue(withIdentifier: "showMonsterDetail", sender: self) 
     } 
    } 

이 링크 프로젝트이다가. 내가보기에 View Controller가 Browse View Controller입니다. 보기 컨트롤러 내가 TeamBuilderViewController 되는 풀기있어 https://github.com/emanleet/monsterpedia

편집 : 나는 SEGUE 다른 뷰 컨트롤러의 일부로서 컨테이너 내부 뷰 컨트롤러입니다 TeamBuilderTableViewController에 풀어서주의와 관련 있다고 생각 . 이것이 내가 긴장을 풀지 않는 이유가 작동하지 않는지 알 수 있습니까? 검색 당신이보기 컨트롤러를 볼 수 있습니다 활성 때 didSelectRow..presentedViewController를 인쇄 할 경우

답변

0

SearchController 빈 뷰 컨트롤러
을 제시한다.
즉, 현재 프레젠테이션에서 segue를 수행하려고합니다. 모든 단편이나 발표를하기 전에 SearchController을 기각해야합니다.

또한 SearchBar 만 필터링하기 때문에 SearchController이 필요하지 않습니다.
대신 을 tableViewHeaderView에 넣고 대리인을 사용하여 필터링을 수행하고 isActive이 필터링 된 결과와 비교하여 전체 목록에 액세스하는지 확인하는 대신 텍스트가 지워지고 항상 필터에 전체 배열을 넣습니다. 필터링 된 결과에 액세스하십시오.

0

두 단계 일은 먼저보기 컨트롤러가 제시된 검색 컨트롤러를 닫은 다음, 할 일을하십시오.

yourSearchController.dismiss(animated: true, completion: { 
       self.performSegue(withIdentifier: "yourUnwindSegue", sender: self) 
      })