Значение доступа вне структуры в Swift 3
Я пытаюсь реализовать PagingMenuController
для моего iOS-приложения Swift 3. Смотрите полный пример кода здесь на github. В этом примере они создают viewControllers внутри структуры PagingMenuOptions
(let viewController1 = ViewController1() ...
). Но вместо того, чтобы создавать здесь, я хотел бы иметь возможность получить доступ к массиву ViewControllers, объявленных вне структуры PagingMenuOptions
, Но я получаю ошибку
Объявление структуры не может закрывать значение '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"))
}
}
}
1 ответ
Решение
Это можно сделать, добавив функцию init(xxx) в struct PagingMenuOptions и передав массив viewControllers в эту функцию.