【问题标题】:UISearchBar with hidden TableView on NavigationBarUISearchBar 与 NavigationBar 上的隐藏 TableView
【发布时间】:2014-12-06 01:37:49
【问题描述】:

我正在尝试在 NavigationBar 上创建一个带有 searchBar 的视图,我希望这个 searchBar 在键入开始后立即打开一个带有搜索结果的 tableView,并在触摸项目后将其隐藏。我是这个平台的新手,所以我只需要一个可以遵循的路径,我不知道从哪里开始。

【问题讨论】:

  • 你为什么不试试 UISearchController?
  • 我试过了,但是关联的 tableView 仍然在视图的其余部分之上,我希望它在搜索之前隐藏
  • 其实很简单。虽然 UISearchController 是要走的路。解决方法是在 tableviewheader 中添加搜索栏,并设置 tableviews 内容偏移搜索栏的高度。
  • 请注意,通过以您希望的方式以编程方式插入它,您还必须通过代码执行所有其他视图。您将必须填充显示来自用户插入的文本的搜索结果的表格视图。这就是 UISearchController 是要走的路。
  • @JoãoMiranda 查看我的编辑以进行快速自定义

标签: ios objective-c uitableview uisearchbar


【解决方案1】:

根据我的评论:这是更深入的解释。快乐编码:

.h

@interface TableViewController : UITableViewController <UISearchBarDelegate>

@property (strong, nonatomic) UISearchBar *searchBar;

@end

.m

- (void) viewDidLoad:(BOOL)animated {

UIView *searchbarView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)]; //This adds a container that will hold the search bar. 
self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)]; 
self.searchBar.delegate = self;
[searchbarView addSubview:self.searchBar];
self.tableView.tableHeaderView = searchbarView; //Inserts UIView into the header of self.tableView
[self.tableView setContentOffset:CGPointMake(0, 44)];
}

差不多就是这样。如果您想自定义其他内容,例如键盘布局和文本填充方式以及颜色、字体和占位符文本等,您可以在 viewDidLoad 中编辑它或创建一个子类

编辑我在下面包含了一些用于自定义的示例代码:

self.searchBar.keyboardAppearance = UIKeyboardAppearanceDark;
self.searchBar.returnKeyType = UIReturnKeySearch;
self.searchBar.searchBarStyle = UISearchBarStyleProminent;
self.searchBar.barTintColor = [UIColor lightGrayColor];
self.searchBar.placeholder = @"Search for queries here";
self.searchBar.showsCancelButton = YES;
[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                                                              [UIColor blueColor],
                                                                                              NSForegroundColorAttributeName,
                                                                                              nil]
                                                                                    forState:UIControlStateNormal];

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
self.searchBar.showsCancelButton = NO;
[self.searchBar resignFirstResponder];
}

【讨论】:

    【解决方案2】:

    您可以在顶部创建一个带有 UISearchBar 的视图,然后创建一个 UITableView(最初是隐藏的)并将其添加到您现有的视图中。隐藏导航栏将给出与 UISearchController 相同的外观。然后,您可以在用户开始搜索时在搜索栏委托中显示表格视图。

    【讨论】:

      猜你喜欢
      • 2013-10-22
      • 1970-01-01
      • 2020-03-15
      • 1970-01-01
      • 1970-01-01
      • 2015-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多