Создайте меню динамически, но с использованием того же контроллера представления [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

}

Надеюсь, поможет:)

Другие вопросы по тегам