我想知道哪种解决方案最适合下拉动作:Pull-To-Refresh与Pull-To-Search?如果我想在Mail应用程序中同时拥有(搜索栏和刷新),该怎么办?不知道应用程序商店中的批准是什么样的......
您如何使用UITableViewController
答案 0 :(得分:44)
您可以非常轻松地在UITableViewController中同时进行“Pull-To-Refresh”和“Pull-To-Search”。
这里是拉动刷新:
UIRefreshControl *refresh = [[UIRefreshControl alloc] init];
[self.tableView addSubview:refresh];
self.refreshControl = refresh;
要知道何时被拉出',请向控件添加目标:
[self.refreshControl addTarget:self action:@selector(refreshContent:) forControlEvents:UIControlEventValueChanged];
在这里"拉到搜索":
UISearchBar *searchBar = [[UISearchBar alloc] init];
UISearchDisplayController *searchController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];
searchController.delegate = self;
searchController.searchResultsDataSource = self;
self.tableView.tableHeaderView = searchBar;
self.tableView.contentOffset = CGPointMake(0, CGRectGetHeight(searchBar.frame));
正如您所看到的,Pull-To-Search实际上只是将searchBar添加为tableHeaderView并且最初稍微偏移了tableView,因此搜索栏最初没有显示。这根本不会干扰Pull-To-Refresh!
答案 1 :(得分:2)
以下是使用UISearchController对Swift 2有用的方法:
class YourTableViewController: UITableViewController, UISearchResultsUpdating {
let searchController = UISearchController(searchResultsController: nil)
override func viewDidLoad() {
super.viewDidLoad()
// Initialize the refresh control
self.refreshControl!.addTarget(self, action: #selector(YourTableViewController.refresh(_:)), forControlEvents: UIControlEvents.ValueChanged)
searchController.searchResultsUpdater = self
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.sizeToFit()
self.tableView.tableHeaderView = searchController.searchBar
self.tableView.contentOffset = CGPointMake(0, CGRectGetHeight(searchController.searchBar.frame));
}
“。refresh(_ :)”指的是
func refresh(sender:AnyObject)
{
//Load Data
}
确保已启用“刷新”。
http://i.stack.imgur.com/e1K34.png
这个问题的第一个答案有助于:How to implement UISearchController in UITableView - SWIFT
我还发现本教程很有用:http://www.appcoda.com/custom-search-bar-tutorial/