动态创建菜单但使用相同的视图控制器 [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
}
希望对您有所帮助:)
我正在尝试创建基于 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
}
希望对您有所帮助:)