swift 中的视图控制器 indexOfObject

viewControllers indexOfObject in swift

我有这个 objective-c 方法,我正在尝试将其重写到 swift。

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    int index = [navigationController.viewControllers indexOfObject:viewController];
    self.pageControl.currentPage = index;
}

我在 swift 中写这一行时遇到困难:

int index = [navigationController.viewControllers indexOfObject:viewController];

如何访问 IndexOfObject?

在Swift 1.2 (Xcode 6.x)

let index = find(navigationController.viewControllers, viewController)!

在 Swift 2.0 (Xcode 7.x)

let arrayOfVCs = navigationController.viewControllers as Array
let index = arrayOfVCs.indexOf(viewController)

在 Swift 3.0 (Xcode 8.x)

let index = navigationController.viewControllers?.index(of: viewController)

在Swift4中,对于TabBarController,获取所选视图控制器的索引:

let index = tabBarController.viewControllers?.index(of: viewController)

In Swift 5 index(of element: Element) 已弃用..所以使用

let index = navigationController?.viewControllers.firstIndex(of: yourController)