基本的に私が達成しようとしているのは、スコープバーが消えないようにすることです。
環境:IOS 7、ストーリーボード、ビューコントローラー内「検索バーと検索ディスプレイコントローラー」と別のテーブルビューがあります(検索バーはテーブル内にありません)
View Controller.h の内部
@property (nonatomic, strong) IBOutlet UISearchBar *candySearchBar;
ビューコントローラーの内部.m
@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 ですが、スコープバーはまだ表示されていません。
私はまだ自分がコードに慣れていないと考えています。障害はまだ初心者の間違いである可能性があります。
edit : ビュー コントローラーの別のコードです。
-(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(@"%hhd@",controller.searchBar.hidden);
}