Панель отображения Pull-To-Refresh и search
Мне интересно, какое решение лучше всего подходит для действия pull down: Pull-To-Refresh vs. Pull-To-Search? Что делать, если я хочу иметь как (панель поиска, так и обновление), как в приложении "Почта"? Не знаю, как выглядит утверждение в магазине приложений...
Как вы реализуете это с помощью UITableViewController
?
Ответы
Ответ 1
Вы можете легко и легко отображать Pull-To-Refresh и Pull-To-Search в UITableViewController.
Здесь Pull to Refresh:
UIRefreshControl *refresh = [[UIRefreshControl alloc] init];
[self.tableView addSubview:refresh];
self.refreshControl = refresh;
Чтобы узнать, когда он был "вытащен", добавьте цель в элемент управления:
[self.refreshControl addTarget:self action:@selector(refreshContent:) forControlEvents:UIControlEventValueChanged];
Здесь "Pull-To-Search":
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 вообще!
Ответ 2
Вот как это работает для Swift 2 с помощью UISearchController:
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
}
Убедитесь, что Refreshing включен.
http://i.stack.imgur.com/e1K34.png
Первый ответ на этот вопрос помог: Как реализовать UISearchController в UITableView - SWIFT
Я также нашел этот учебник полезным: http://www.appcoda.com/custom-search-bar-tutorial/