在选择时是否在DropDownMenu中返回值?

时间:2019-01-17 23:07:52

标签: swift

我是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 :(得分:0)

正如您提到的,viewDidLoad()中所有事情都在发生,我认为了解正在发生的事情很重要。

视图加载并将testmyCity设置为nil

当用户从下拉菜单中选择一个项目时,menuView.didSelectItemAtIndexHandler中的代码将被调用,尽管myCity仍为{{1 }}作为完成处理程序,设置test的值对nil无效。

在完成处理程序(位于myCity所在的位置)中选择值时,您应该执行想要执行的任何代码。