UITableView의 머리글에서 UISearchController의 UISearchBar를 사용하고 있습니다. 검색 창에서 일부 텍스트를 입력하면 관련된 모든 메소드가 호출되고 테이블보기에 올바른 검색 결과가 예상대로 표시된다는 점에서 검색 기능이 정상적으로 작동합니다.포커스를 잃을 때 UISearchController 검색 막대 텍스트가 사라집니다.
문제는 결과 중 하나를 사용하여 무언가를하고 싶을 때 발생합니다. 표보기 셀 중 하나를 탭하자 마자 검색 막대의 필드가 비게됩니다. 검색 텍스트가 이제 비어 있으므로 검색 결과가 업데이트되고 테이블보기가 다시로드되어 결과가 0입니다. 따라서 표 셀의 탭은 아무 것도하지 않습니다. 표 셀이 더 이상 존재하지 않기 때문입니다.
검색 문자열이 비어있을 때 내 updateSearchResultsForSearchController:
메서드를 업데이트하여 검색 결과를 업데이트하지 않으면이 문제의 대부분을 해결할 수 있습니다. 그리고 이것은 잘 작동합니다. 그러나 어떤 경우에도 검색 텍스트를 검색 필드에 남겨두고 싶습니다. 내 질문의 핵심은 ...
검색 텍스트가 내 검색 텍스트에서 사라지는 이유는 무엇입니까? 내가 다른 곳에서 탭하면 검색 필드가 비어 있지 않습니까?
- (void)viewDidLoad {
[super viewDidLoad];
searcher = [[UISearchController alloc] initWithSearchResultsController:nil];
searcher.searchResultsUpdater = self;
searcher.delegate = self;
searcher.definesPresentationContext = YES;
resultsTable.tableHeaderView = searcher.searchBar;
편집 : 나는 검색 창에 포커스가있는 동안 테이블 뷰 세포가 흐리게되는 것을 알 여기
내가 검색 창 및 검색 컨트롤러를 설정하는 방법입니다. 그래서 검색 컨트롤러가 모든 터치를 캡처하고 아마도 '취소'작업으로 처리한다고 생각합니다. 그렇다면이 방법으로 취소하는 것을 어떻게 중지합니까?
는 "> https://developer.apple.com/reference/uikit/uisearchcontroller/1618656-obscuresbackgroundduringpresenta 한 번 봐 같은 뷰 컨트롤러를 사용하는 경우 검색 내용을 표시 : 내가 추가 할 필요 검색 결과를 제외하고이 속성을 false로 설정하는 것이 좋습니다.이 속성의 기본값은 true입니다. " –
예, 정확합니다 - 문제가 해결되었습니다. 나는 당신이 올린 것과 거의 같은 시간에 나 자신을 발견했다. 나는 어리 석다. 어쨌든, 나중에 답변을 올렸습니다. 나중에 다른 사람에게 도움이되기 때문에. –