처음에는 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'는 기본적으로 true입니다 만,'UIScrollView'가 많거나 하위 클래스 인 경우, 필요한 뷰를 제외한 모든 객체에 대해'false'를 설정해야합니다. –
'UIScrollView'가 가지고있는 것은'override func scrollViewWillBeginDragging scrollView : UIScrollView) { self.searchController.searchBar.resignFirstResponder ( self.searchController.searchBar.endEditing (true) } '이렇게하면 검색 할 때 키보드를 닫을 수 있습니다. –