2015-09-15 5 views
1

У меня есть этот метод объектно-с, который я пытаюсь переписать в swift.viewControllers indexOfObject в swift

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

У меня возникли трудности написания этой линии в скор:

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

Как я получить доступ к IndexOfObject?

+1

В Swift 2.0 вы могли бы вы метод IndexOf, см http://stackoverflow.com/a/24069331/3617012 – iOSX

+0

Как могу я проверить, какую версию Swift я использую? –

+1

Если вы используете Xcode 7 (еще не выпущенный официально), то у вас есть Swift 2.0 у вас под рукой. Xcode 6.4 поддерживает Swift 1.2, и вы должны использовать функцию 'find' вместо' indexOf'. Как его использовать, также объясняется в ответе, о котором я говорил в своем предыдущем комментарии. – iOSX

ответ

5

В 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) 
0

В Swift 4, для TabBarController, чтобы получить индекс выбранного контроллера вида:

let index = tabBarController.viewControllers?.index(of: viewController) 
Смежные вопросы