【问题标题】:viewControllers indexOfObject in swiftswift中的viewControllers indexOfObject
【发布时间】:2015-09-15 09:04:16
【问题描述】:

我有这个 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 2.0 中,您可以使用 indexOf 方法,请参阅 stackoverflow.com/a/24069331/3617012
  • 如何查看我使用的 Swift 版本?
  • 如果您使用的是 Xcode 7(尚未正式发布),那么您的 Swift 2.0 触手可及。 Xcode 6.4 支持 Swift 1.2,您可以使用 find 函数而不是 indexOf。我在之前的评论中链接到的答案中也解释了如何使用它。

标签: ios swift indexof


【解决方案1】:

在 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)

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        在 Swift 3.0 (Xcode 8.x) 中

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-11
          • 2019-02-24
          • 2012-01-17
          相关资源
          最近更新 更多