1

I'm trying to implement the PagingMenuController for my iOS app Swift 3. See the full code example here on github. In this example, they create the viewControllers inside the struct PagingMenuOptions (let viewController1 = ViewController1() ...). But instead of creating here, I would like to be able to access an array of ViewControllers declared outside of the struct PagingMenuOptions. But I get an error

Struct declaration cannot close over value 'self' defined in outer scope.

Any idea how to implement this?

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"))
        }
    }
}
0x416e746f6e
  • 9,872
  • 5
  • 40
  • 68
Philiz
  • 429
  • 5
  • 25
  • On which line do you get this error? – 0x416e746f6e Oct 14 '16 at 11:53
  • When I move these two viewController declaration outside of the struct "let viewController1 = ViewController1() let viewController2 = ViewController2()" the error append on return [viewController1, viewController2] – Philiz Oct 15 '16 at 20:44

1 Answers1

0

This can be done by adding a init(xxx) function to the struct PagingMenuOptions and passing the viewControllers array to that function.

Philiz
  • 429
  • 5
  • 25