Ich habe hier einen benutzerdefinierten Befehl, um scrollToTop, wenn ein TabBar Element zweimal gedrückt wird. aber jetzt möchte ich eine Funktion zu einem bestimmten tabBaritem hinzufügen (Tag 3 können sagen, ....)Tippen Sie auf tabBarItem, um einen View Controller zu präsentieren
Wie kombiniere ich, was ich habe jetzt:
import UIKit
class TabBarController: UITabBarController,UITabBarControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
delegate = self
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
guard let viewControllers = viewControllers else { return false }
if viewController == viewControllers[selectedIndex] {
if let nav = viewController as? UINavigationController {
guard let topController = nav.viewControllers.last else { return true }
if !topController.isScrolledToTop {
topController.scrollToTop()
return false
} else {
nav.popViewController(animated: true)
}
return true
}
}
return true
}
}
extension UIViewController {
func scrollToTop() {
func scrollToTop(view: UIView?) {
guard let view = view else { return }
switch view {
case let scrollView as UIScrollView:
if scrollView.scrollsToTop == true {
scrollView.setContentOffset(CGPoint(x: 0.0, y: -scrollView.contentInset.top), animated: true)
return
}
default:
break
}
for subView in view.subviews {
scrollToTop(view: subView)
}
}
scrollToTop(view: view)
}
var isScrolledToTop: Bool {
if self is UITableViewController {
return (self as! UITableViewController).tableView.contentOffset.y == 0
}
for subView in view.subviews {
if let scrollView = subView as? UIScrollView {
return (scrollView.contentOffset.y == 0)
}
}
return true
}
}
Mit diesem (so kann ich die spezifische Maßnahmen zu einem bestimmten tabBarItem):
func tabBarController(_ tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
if tabBarController.selectedIndex == 0 {
// present your first view controller
}
else if tabBarController.selectedIndex == 1 {
// present your second view controller
}
else if tabBarController.selectedIndex == 2 {
// present your third view controller
}
}
Danke für Ihre Hilfe ...
Ich glaube nicht, dass Sie verstanden haben. Im Moment habe ich eine Funktion, die alle tabBarItems adressiert. Aber ich möchte zusätzlich zu dieser Funktion. To tabbarItem bei Index 3 zu sagen, eine ViewController beim Tippen angezeigt. –