我如何根据变量导航到另一个视图控制器
How can i navigate to another view controller dependent on a variable
我正在尝试通过按下我命名为 'find' 的按钮 link 到另一个视图控制器。问题出在 pickerView 上。我想要来自 pickerView 的 'service' selected 来确定你最终到达的页面。例如,您在 pickerView 中 select 'bars',单击 'find' 按钮,它会将您带到条形视图控制器页面。
这是我控制选择器和查找按钮的代码。
导入 UIKit
class ViewController: UIViewController, UIPickerViewDelegate {
@IBOutlet weak var SelectedService: UILabel!
@IBAction func Find(sender: AnyObject) {
}
@IBOutlet weak var ItemLabel: UILabel!
var services = ["Cafe","Coffee Shops","Bar","Takeaway","Sunday Roast","Shoe Mender","Craft Shops","Electrical"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int{
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
return services.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String!{
return services[row]
}
}
我是使用 swift 编码的新手,所以请您用简单的方式解释一下您的答案。
非常感谢
肖恩
在 @IBAction func Find()
中,您可以使用 switch 语句来检查从 UIPickerView 中选择了哪个项目,并基于此您可以像这样呈现所需的视图控制器:
let cafeViewController: CafeViewController = CafeViewController()
self.presentViewController(cafeViewController, animated: true, completion: nil)
但是您确定每个项目都需要它自己的视图控制器吗?它们可能看起来完全一样,只是呈现的数据会不同......所以你可以只使用一个视图控制器,在 func prepareForSegue()
中发送选择的项目并根据该视图控制器中的 viewDidLoad() 准备数据.
或者至少尝试尽可能多地重用,为您的视图控制器创建一些基础 class,然后为每个服务创建子class。
我正在尝试通过按下我命名为 'find' 的按钮 link 到另一个视图控制器。问题出在 pickerView 上。我想要来自 pickerView 的 'service' selected 来确定你最终到达的页面。例如,您在 pickerView 中 select 'bars',单击 'find' 按钮,它会将您带到条形视图控制器页面。
这是我控制选择器和查找按钮的代码。
导入 UIKit
class ViewController: UIViewController, UIPickerViewDelegate {
@IBOutlet weak var SelectedService: UILabel!
@IBAction func Find(sender: AnyObject) {
}
@IBOutlet weak var ItemLabel: UILabel!
var services = ["Cafe","Coffee Shops","Bar","Takeaway","Sunday Roast","Shoe Mender","Craft Shops","Electrical"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int{
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
return services.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String!{
return services[row]
}
}
我是使用 swift 编码的新手,所以请您用简单的方式解释一下您的答案。
非常感谢
肖恩
在 @IBAction func Find()
中,您可以使用 switch 语句来检查从 UIPickerView 中选择了哪个项目,并基于此您可以像这样呈现所需的视图控制器:
let cafeViewController: CafeViewController = CafeViewController()
self.presentViewController(cafeViewController, animated: true, completion: nil)
但是您确定每个项目都需要它自己的视图控制器吗?它们可能看起来完全一样,只是呈现的数据会不同......所以你可以只使用一个视图控制器,在 func prepareForSegue()
中发送选择的项目并根据该视图控制器中的 viewDidLoad() 准备数据.
或者至少尝试尽可能多地重用,为您的视图控制器创建一些基础 class,然后为每个服务创建子class。