Возвращаемое значение в DropDownMenu при выборе? - PullRequest
0 голосов
/ 18 января 2019

Я новичок в Xcode и Swift. Я использую эту библиотеку: https://github.com/PhamBaTho/BTNavigationDropdownMenu для создания DropDownMenu в моем приложении. Я следил за демо от Github и все работает отлично. Я пытаюсь получить выбранное значение и присвоить его строке вне функции didSelectItemAtIndexHandler . Это мой код:

 var menuView: BTNavigationDropdownMenu!

 var items = ["San Francisco", "New York", "LA", "Chicago"]


 menuView = BTNavigationDropdownMenu(navigationController: self.navigationController, containerView: self.navigationController!.view, title: BTTitle.index(0), items: items)

    menuView.didSelectItemAtIndexHandler = {(indexPath: Int) -> Void in

        self. myCity = items[indexPath]
        //print(myCity) // prints the correct city every time
    }

 self.navigationItem.titleView = menuView

Я пытаюсь получить следующее за пределами menuView.didSelectItemAtIndexHandler :

 var test = String()
 test = myCity
 print(test)

Любая помощь будет оценена. Заранее спасибо!

Я пытаюсь передать данные отсюда в TopFiveViewController.

 menuView.didSelectItemAtIndexHandler = {(indexPath: Int) -> Void in

 let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main) 
 let vc = storyboard.instantiateViewController(withIdentifier: "TopFiveViewController") as! TopFiveViewController 
 vc.myCity = self!.items[indexPath]
 print(myCity) // prints the correct city every time but it doesn't pass the value to TopFiveViewController!

}

В TopFiveViewController у меня есть:

var myCity = String()

override func viewDidLoad() {
    super.viewDidLoad()

      if self.myCity == "San Francisco" {

        // load SF json file

    } else if myCity == "New York" {

        // load NY json file

      }

1 Ответ

0 голосов
/ 18 января 2019

Как вы упомянули, что все происходит в вашем viewDidLoad() Я думаю, что важно понимать, что происходит.

Вид загрузки и test, а также myCity установлены на nil.

Когда пользователь выбирает элемент из выпадающего меню, будет вызываться код в menuView.didSelectItemAtIndexHandler, и теперь myCity будет установлен на выбранное значение, хотя test все равно будет nil в качестве обработчика завершения, устанавливающего значение myCity не влияет на test.

Вы должны выполнить любой код, который хотите выполнить, когда значение выбрано в обработчике завершения (где находится self. myCity = items[indexPath]).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...