我是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
}
答案 0 :(得分:0)
正如您提到的,viewDidLoad()
中所有事情都在发生,我认为了解正在发生的事情很重要。
视图加载并将test
和myCity
设置为nil
。
当用户从下拉菜单中选择一个项目时,menuView.didSelectItemAtIndexHandler
中的代码将被调用,尽管myCity
仍为{{1 }}作为完成处理程序,设置test
的值对nil
无效。
在完成处理程序(位于myCity
所在的位置)中选择值时,您应该执行想要执行的任何代码。