さて、左側に UIButton を備えた UISearchbar が必要でした。検索を行ったところ、両方の項目を UIToolbar に追加し、それをテーブルビューのヘッダー ビューに追加するのが最善の方法であることがわかりました。そこで、問題はありませんでしたが、ユーザーが入力を開始したときにツールバーにも[キャンセル]ボタンを表示したかったので、もう一度検索して、それを機能させるためにそれを見つけましたUISearchbar は UIView にネストする必要があり、それが私の問題が発生している場所です。アイテムを追加する順序が原因なのか、アイテムを追加する順序が原因なのかはわかりませんが、ビューの背景色または他のものの背景色が干渉していますツールバー。下のスクリーンショットを見ると、UIToolBar の背景色 (darkGrayColor を使用しているだけ) は正しく表示されていますが、SearchBar の色が濃くなっています。保持ビューの背景を clearColor に設定しようとしましたが、SearchBar の背景色も clearColor に設定しようとしましたが、これまでのところ、UISearchBar を私が持っている UIBarButton と一致させることができないようです。以下は、SearchBar/ToolBar を設定するためのコードです。
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
if (section == 0) {
//Create the SearchBar
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 280, 44)];
searchBar.placeholder = @"Search for Client";
searchBar.delegate = self;
searchBar.tag = kSearchBarTag;
//Create view to wrap search bar in
UIView *barWrapper = [UIView new];
barWrapper.frame = searchBar.bounds;
barWrapper.backgroundColor = [UIColor clearColor];
[barWrapper addSubview:searchBar];
UIBarButtonItem *searchBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:searchBar];
//Create the Sort Button
UIBarButtonItem *sortButton = [UIBarButtonItem new];
[sortButton setImage:[UIImage imageNamed:iconSort]];
[sortButton setTarget:self];
[sortButton setAction:@selector(SortButtonPressed:)];
//Create the ToolBar
UIToolbar *searchToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0,0,tableView.bounds.size.width,44)];
searchToolbar.backgroundColor = [UIColor darkGrayColor];
[searchToolbar setItems:[NSArray arrayWithObjects:sortButton,searchBarButtonItem, nil] animated:YES];
return searchToolbar;
}
return nil;
}
#pragma mark - SearchBar Delegate
-(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
searchBar.showsCancelButton = YES;
return TRUE;
}
-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
searchBar.showsCancelButton = NO;
[searchBar resignFirstResponder];
}