【问题标题】:How can I link a to a second view controller using a button determined by a variable?如何使用由变量确定的按钮将 a 链接到第二个视图控制器?
【发布时间】:2015-06-25 18:06:59
【问题描述】:

我创建了一个 UIPickerView,其中包含一系列服务。我使用 didSelectRow 在 UIPickerView 下方显示我选择的服务。这一切都很好,而且效果很好。

我希望选择的服务将我带到另一个名为该服务的视图控制器。例如,在 Picker 中选择了咖啡店,“咖啡店”显示在选择器下方,您单击一个按钮将带您进入显示有关咖啡店的给定信息的页面。

@Pbush25 感谢您的快速回复。请您看看我的代码并告诉我哪里出了问题,因为我仍然无法让它工作。

import 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]
    }
}

【问题讨论】:

  • UIPickerView 对象包含一个 selectedRowInComponent 函数,该函数返回所选行的行号。根据该数字,您应该能够编写一个基于所选值推送新视图控制器的函数。

标签: swift uipickerview


【解决方案1】:

正如@JAL 所说,我相信UIPickerViewDelegate 的方法是didSelectRow 或某种程度的东西,它将为您提供所选行的索引路径。当您按下按钮进入下一个屏幕时,您在 prepareForSegue 方法中所要做的就是获取该行的元素并使用 switch 语句来确定哪个新视图控制器根据什么值激活 segue你收到。

编辑:为清楚起见添加了代码。

//save the picked data to a variable
func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int)
{
    selection = "\(pickerViewData[row])"
}

//use this variable to decide which segue to take
func prepareForSegue(sender: UIStoryboardSegue){
    switch selection {
    case: "Coffee Shops" 
        performSegueWithIdentifier("goToCoffeeShops", sender: self)

    case: "Some other selection"
        performSegueWithIdentifier("someOtherSegue", sender: self)
    }
}

【讨论】:

  • 您好,感谢您的快速回复。它不想工作。我一直在玩代码一段时间,但我无法让它工作。我对 swift 很陌生,所以我把我的代码放在下面 - 也许你可以告诉我哪里出错了。
猜你喜欢
  • 2013-07-11
  • 2014-05-05
  • 2013-05-01
  • 2019-10-14
  • 1970-01-01
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多