를 제거? 당신이 UISearchBar를 활성화 할 때 소스 테이블보기를 통해 애니메이션을 투명 검은 색 오버레이를 제거하려면 어떻게 투명 오버레이 UISearchBar
당신은 어떻게 든 책임있는 UIView에 도착하고 0으로 알파입니다 설정할 수 있습니까?또는 검은 색 오버레이의 상단에 빈 searchResultsTableView를 표시하는 방법은 무엇입니까?
를 제거? 당신이 UISearchBar를 활성화 할 때 소스 테이블보기를 통해 애니메이션을 투명 검은 색 오버레이를 제거하려면 어떻게 투명 오버레이 UISearchBar
당신은 어떻게 든 책임있는 UIView에 도착하고 0으로 알파입니다 설정할 수 있습니까?또는 검은 색 오버레이의 상단에 빈 searchResultsTableView를 표시하는 방법은 무엇입니까?
항상는 검색에서 어떤 결과가 아직없는 경우에도, 일부 세포를 표시합니다. 이 작업은 일반적인 UITableViewDelegate/UITableViewDataSource 메서드를 통해 수행 할 수 있습니다. 원래 테이블 뷰, 검색 테이블 뷰 및 더미 셀이 포함 된 검색 테이블 뷰를 다루기 때문에 조심하십시오. 모든 UITableViewDelegate/UITableViewDataSource 메서드는이를 인식하고 있어야합니다.
UISearchDisplayControllerDelegate.searchResultsTableView를 처음로드 할 때 다른 데이터 소스로 설정하려면 어떻게해야합니까? 그리고 누군가 검색을 시작할 때 searchResults 데이터 소스로 전환합니까? – billabel
만약 내가 너라면, 나는 같은 데이터 소스를 사용하고 if ([filteredListContent count] == 0)를 체크한다. 그렇다면 일부 빈 셀 (tableView 높이/행 높이) 섹션 당 행 수, 1 섹션을 반환하고 선택한 행을 선택 취소하십시오. – refulgentis
사실 이제는 설명서를 보았으므로 UISearchBar의 텍스트를 변경하는 방법이 없으므로 이것이 유일한 방법 일 수 있습니다. – refulgentis
po [self.view subviews]
(id) $1 = 0x0a3155f0 <__NSArrayM 0xa3155f0>(
<ATShadowTableView: 0xc341600; baseClass = UITableView; frame = (0 44; 320 411); clipsToBounds = YES; gestureRecognizers = <NSArray: 0xa627200>; layer = <CALayer: 0xa626d30>; contentOffset: {0, 0}>,
<UISearchBar: 0xa618f40; frame = (0 0; 320 44); text = ''; layer = <CALayer: 0xa619040>>,
<UIControl: 0xa329fc0; frame = (0 44; 320 455); alpha = 0.8; opaque = NO; animations = { opacity=<CABasicAnimation: 0xa32b4e0>; }; layer = <CALayer: 0xa32a060>>
)
셀프 뷰의 마지막 객체 (UIControl
)는 제거하려는 객체입니다. 그래서
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller
{
...
[self performSelector:@selector(removeOverlay) withObject:nil afterDelay:.01f];
}
- (void)removeOverlay
{
[[self.view.subviews lastObject] removeFromSuperview];
}
이것은 여전히 iOS 7에서 작동하지만, 이제는 'UIControl' 대신'UISearchDisplayControllerContainerView '인 것처럼 보입니다. 또한이 답변에서 오버레이가'-searchDisplayControllerDidBeginSearch'에 나타나지만 매우 짧은 지연 후에'-searchDisplayControllerWillBeginSearch'에서 제거해야한다는 점을 분명히하기 위해 추가하고 싶습니다. '-searchDisplayControllerDidBeginSearch'에서 그것을 제거하면 오버레이가 다시 사라지기 전에 잠시 나타납니다. – iMaddin
나는 이것이 iOS7에서 실제로 작동하지 않는다는 것에 동의하지 않습니다. 실제로 오버레이가 사라지지만 검색 막대 텍스트가 더 이상 변경되지 않으면 표보기가 다시로드되지 않습니다. –
iOS7에서 iOS7에서이 기능을 사용할 수있었습니다. [[self.view.subviews lastObject] setHidden : YES]; [[self.view.subviews lastObject] setHidden : 아니요]; 적절한 시간에 . – Rammeln
더 명확히하기 위해. 사용자가 검색을 시작하기 전에 searchResultsTableView (searchResults를 표시하기 위해 searchDisplayController가 제어하는 tableview)를 표시하는 방법이 있습니까? 또는 searchDisplayController가 원래의 datasource tableview 위에 그려주는 검은 색 오버레이를 숨길 수있는 방법이 있습니까? – billabel