Создайте меню динамически, но с использованием того же контроллера представления [PagingMenuController]
Я пытаюсь создать пейджинговое меню на основе ButtonBar, но оно будет динамичным, потому что данные (название для номера меню) будут получены с сервера. К сожалению, не существует такого примера, созданного для этой ситуации. Я знаю, что глупо запрашивать такой пример, потому что я понятия не имею для этого случая. Я просто хочу использовать эту библиотеку как новую, потому что она кажется более гладкой, чем другие библиотеки, которые я использовал. Итак, мне очень нужна помощь с примером проекта. И я хочу использовать один и тот же контроллер представления для каждой отдельной вкладки, например UITableViewController, для отображения данных для каждой вкладки.
Любая Помощь с этим??? Пример будет оценен... Спасибо..
1 ответ
Мое решение состоит в том, чтобы сделать синхронный вызов на сервер, чтобы получить данные, которые мне нужны, чтобы заполнить меню. Вполне возможно, что существует асинхронное решение, но я не могу понять его, так как мое приложение полностью зависит от пунктов меню.
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
}
Надеюсь, поможет:)