【问题标题】:Access value outside of a struct in Swift 3在 Swift 3 中访问结构之外的值
【发布时间】:2016-10-14 09:49:08
【问题描述】:

我正在尝试为我的 iOS 应用 Swift 3 实现 PagingMenuController。请参阅 full code example here on github。在这个例子中,他们在结构 PagingMenuOptions (let viewController1 = ViewController1() ...) 中创建了 viewControllers。但不是在这里创建,我希望能够访问声明为结构PagingMenuOptions outside 的 ViewControllers 数组。但我得到一个错误

结构声明不能关闭在外部范围中定义的值'self'。

知道如何实现吗?

private struct PagingMenuOptions: PagingMenuControllerCustomizable {
    fileprivate var componentType: ComponentType {
        return .all(menuOptions: MenuOptions(), pagingControllers: pagingControllers)
    }

    fileprivate var pagingControllers: [UIViewController] {
        let viewController1 = ViewController1()
        let viewController2 = ViewController2()
        return [viewController1, viewController2]
    }

    fileprivate struct MenuOptions: MenuViewCustomizable {
        var displayMode: MenuDisplayMode {
            return .segmentedControl
        }
        var itemsOptions: [MenuItemViewCustomizable] {
            return [MenuItem1(), MenuItem2()]
        }
    }

    fileprivate struct MenuItem1: MenuItemViewCustomizable {
        var displayMode: MenuItemDisplayMode {
            return .text(title: MenuItemText(text: "First Menu"))
        }
    }
    fileprivate struct MenuItem2: MenuItemViewCustomizable {
        var displayMode: MenuItemDisplayMode {
            return .text(title: MenuItemText(text: "Second Menu"))
        }
    }
}

【问题讨论】:

  • 你在哪一行得到这个错误?
  • 当我将这两个 viewController 声明移出结构“let viewController1 = ViewController1() let viewController2 = ViewController2()”时,错误会附加到返回 [viewController1, viewController2]

标签: swift struct swift-structs


【解决方案1】:

这可以通过向结构 PagingMenuOptions 添加一个 init(xxx) 函数并将 viewControllers 数组传递给该函数来完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多