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)
我有这个 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)