Значение доступа вне структуры в 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 в эту функцию.

Другие вопросы по тегам