Сначала настройка UITabBarControllerDelegate делегата. Делегировать можно легко установить из раскадровки или с помощью кода с помощью свойства делегата UITabBarController.
myTabBar.delegate = myNewDelegate // Have to conform to UITabBarControllerDelegate protocol
Вы можете даже подкласс UITabBarController и реализовать UITabBarControllerDelegate для него, чтобы он мог стать делегатом для себя.
mySubclassedTabBar.delegate = mySubclassedTabBar
Когда у вас есть делегат, вы можете попробовать этот метод.
func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool
{
guard let tabBarControllers = tabBarController.viewControllers
else
{
// TabBar have no configured controllers
return true
}
if let newIndex = tabBarControllers.indexOf(viewController) where newIndex == tabBarController.selectedIndex
{
// Index won't change so we can scroll
guard let tableViewController = viewController as? UITableViewController // Or any other condition
else
{
// We are not in UITableViewController
return true
}
tableViewController.tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0), atScrollPosition: .Top, animated: true)
}
return true
}
Да, я знаю эту строку, я видел ее во многих ответах, но у меня всегда были ошибки, указывающие на нее. Может быть, вы можете показать мне, как правильно ее написать, чтобы заставить ее работать? –
'scrollsToTop' истинно по умолчанию, но если у вас много' UIScrollView' или его подклассов, вам нужно установить 'false' для всех, кроме нужного вида –
Единственный 1' UIScrollView' у меня есть: 'override func scrollViewWillBeginDragging (Scrollview: UIScrollView) { self.searchController.searchBar.resignFirstResponder() self.searchController.searchBar.endEditing (истина) } ', так что я могу ударить, чтобы закрыть клавиатуру, когда я искать ... –