动态创建菜单但使用相同的视图控制器 [PagingMenuController]

Create menu dynamically but using same view controller [PagingMenuController]

我正在尝试创建基于 ButtonBar 的分页菜单,但它将是动态的,因为创建的数据(菜单编号的标题)将来自服务器。不幸的是,没有为这种情况创建这样的例子。我知道要求这样的例子真的很愚蠢,因为我对这种情况一无所知。我只想使用这个库作为新库,因为它看起来比我使用的其他库更流畅。所以,我真的需要一个示例项目的帮助。我想为每个不同的选项卡使用相同的视图控制器,例如 UITableViewController 来显示每个选项卡的数据。

有什么帮助吗???一个例子将不胜感激...谢谢..

我的解决方案是同步调用服务器以获取填充菜单所需的数据。可能有一个异步解决方案,但我不太明白,因为我的应用程序完全依赖于菜单项。

   fileprivate func parseMenuItems() {
    self.menuItems = [MenuObject]()
    let url = URL(string: MENU_URL)
    do {
        let data = try Data(contentsOf: url!)
        let json = JSON(data: data)
        for (_, subJson) in json["items"] {
            guard let name = subJson["name"].string else {return}
            guard let url = subJson["url"].string else {return}
            let menuItem = MenuObject(name: name, url: url)
            self.menuItems.append(menuItem)
        }
    } catch {
        print(error)
    }
}

我使用 SwiftyJson 进行解析,但这与此处无关。

此函数 (parseMenuItems()) 在 super.viewDidLoad() 之前调用。

下一步是用 menuItems 数据填充视图控制器:

override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {
    var children = [UIViewController]()

    for menuItem in menuItems! {
         let child = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "TestViewController") as! TestViewController
            child.name = menuItem.name
            child.url = menuItem.url

            children.append(child)
        }
    }
    return children

}

希望对您有所帮助:)