dynamic创build菜单,但使用相同的视图控制器
我正在尝试创build基于ButtonBar的分页菜单,但它将是dynamic的,因为创build的数据(标题的菜单号)将来自服务器。 不幸的是,这种情况并没有这样的例子。 我知道要求这样的例子真的很愚蠢,因为我不知道这个例子。 我只是想用这个库作为新的,因为它似乎更顺利,然后我使用其他库。 所以,我真的需要一个示例项目的帮助表示赞赏。 我想为每个不同的选项卡使用相同的视图控制器,如UITableViewController显示每个选项卡的数据。
任何帮助? 一个例子将不胜感激…谢谢..
我的解决scheme是同步调用服务器来获取我需要填充菜单的数据。 有可能是一个asynchronous解决scheme,但我不能完全弄清楚,因为我的应用程序完全取决于菜单项。
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) } }
为了parsing我使用的是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 }
希望能帮助到你 :)