2016-10-14 19 views
1

私はiOSアプリケーションSwift 3のPagingMenuControllerを実装しようとしています。full code example here on githubを参照してください。この例では、構造体PagingMenuOptionslet viewController1 = ViewController1() ...)内にviewControllerを作成します。しかし、ここで作成する代わりにの外側にあるPagingMenuOptionsと宣言されたViewControllerの配列にアクセスできるようにしたいと考えています。しかし、私はエラーが発生しますSwift 3の構造体外のアクセス値

構造体宣言は、外部スコープで定義された値 '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")) 
     } 
    } 
} 
+0

このエラーはどの回線で発生しますか? – courteouselk

+0

これらの2つのviewController宣言を構造体の外に移動すると、 "viewController1 = ViewController1() let viewController2 = ViewController2()" return [viewController1、viewController2] – Philiz

答えて

0

これは、構造体PagingMenuOptionsにINIT(XXX)機能を追加し、その関数にviewControllersアレイを通過させることによって行うことができます。

関連する問題