기본적으로 달성하려는 것은 스코프 바를 결코 사라지지 않게하는 것입니다.IOS7 : uisearchdisplaycontroller는 항상 스코프 바를 표시합니다.
환경 : 나는 "검색 창 및 디스플레이 컨트롤러 검색"이 별도의 tableview를보기 컨트롤러 내부 IOS 7, 스토리 보드,보기 controller.h
내부(검색 창은 테이블에 있지) 보기 controller.m 내부
@property (nonatomic, strong) IBOutlet UISearchBar *candySearchBar;
@synthesize candySearchBar;
내가 시도하는 것 : 사용자 정의 검색 창 클래스 내부
- (void) setShowsScopeBar:(BOOL) showsScopeBar
{
if ([self showsScopeBar] != showsScopeBar) {
[super invalidateIntrinsicContentSize];
}
[super setShowsScopeBar:showsScopeBar];
[super setShowsScopeBar: YES]; // always show!
NSLog(@"setShowsScopeBar searchbar");
NSLog(@"%hhd", showsScopeBar);
}
와 뷰 컨트롤러에서
searchBarDidEndEditing
같은 것,하지만 난 내 질문에 분명하다 희망 다음
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
[candySearchBar setShowsScopeBar:YES];
[candySearchBar sizeToFit];
}
, 나는 모든 인터넷을 통해 게시 된 많은 솔루션을 시도 대부분 setshowsscopebar에 대해 이야기하지만 작동하지 않는 것 같습니다. setshowscopebar의 로그 출력은 1이지만 스코프 바는 여전히 표시되지 않습니다.
나는 여전히 코드에 익숙하지 않은 것으로 간주되지만 오류는 여전히 초보자 실수 일 수 있습니다.
편집 : 뷰 컨트롤러 코드의 또 다른 조각, 당신은 내가 장님 찾고 있어요 볼 수 있습니다 :
-(void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller{
self.searchDisplayController.searchBar.showsCancelButton = YES;
self.searchDisplayController.searchBar.showsScopeBar = YES;
controller.searchBar.showsScopeBar = TRUE;
controller.searchBar.frame = CGRectMake(0, 149, 768, 88);
UIButton *cancelButton;
UIView *topView = self.searchDisplayController.searchBar.subviews[0];
for (UIView *subView in topView.subviews) {
if ([subView isKindOfClass:NSClassFromString(@"UINavigationButton")]) {
cancelButton = (UIButton*)subView;
}
}
if (cancelButton) {
//Set the new title of the cancel button
[cancelButton setTitle:@"Cancel" forState:UIControlStateNormal];
[cancelButton setEnabled:YES];
controller.searchBar.showsScopeBar = YES;
//candySearchBar.scopeButtonTitles = [NSArray arrayWithObjects:@"Flags", @"Listeners", @"Stations", nil];
}
NSLog(@"%@",NSStringFromCGRect(controller.searchBar.frame));
NSLog(@"%@",NSStringFromCGRect(controller.searchBar.bounds));
NSLog(@"%[email protected]",controller.searchBar.hidden);
}
어디서 났습니까? 내가 찾은 솔루션은 iOS6에서만 작동합니다. 검색 막대를 클릭하면 스코프 바가 숨겨져 다시 나타납니다. – msec
스토리 보드 또는 펜촉을 사용합니까 – codercat
@msec은 ios7에 대한 답을 따르십시오. 고치다. – CoolMonster