Beim ersten Setup UITabBarControllerDelegate Delegate. Der Delegierte kann einfach vom Storyboard oder über einen Code mit der delegate-Eigenschaft von UITabBarController festgelegt werden.
myTabBar.delegate = myNewDelegate // Have to conform to UITabBarControllerDelegate protocol
Sie können sogar UITabBarController Unterklasse und implementieren UITabBarControllerDelegate für sie, damit es Delegierten für sich selbst werden kann.
mySubclassedTabBar.delegate = mySubclassedTabBar
Wenn Sie Delegat haben, können Sie diese Methode ausprobieren.
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
}
Ja, ich kenne diese Zeile ich sah es in vielen Antworten, aber ich habe immer Fehler darauf auch zeigen. Kannst du mir vielleicht zeigen, wie man es richtig schreibt, damit es funktioniert? –
'scrollsToTop' ist standardmäßig true, aber wenn Sie viele' UIScrollView' oder Unterklassen haben, müssen Sie 'false' für alle außer der benötigten Ansicht setzen. –
Die einzige'UIScrollView' die ich habe ist: 'override func scrollViewWillBeginDragging (scroll: UIScrollView) { self.searchController.searchBar.resignFirstResponder() self.searchController.searchBar.endEditing (true) } ', so kann ich bewegen, um die Tastatur zu entlassen, wenn ich suche ... –