Swift 初学者,出现错误 UIPicker

Posted

技术标签:

【中文标题】Swift 初学者,出现错误 UIPicker【英文标题】:beginner with Swift with an error UIPicker 【发布时间】:2018-03-03 18:35:18 【问题描述】:

我正在构建一个简单的应用程序,它有一个 PickerView,其中包含 3 个选项,这些选项应该链接到 3 个 viewController,每个 viewController 分别命名为 FirstViewController、SecondViewController 和 ThirdViewController。 但是我收到了这个错误

> NSInvalidArgumentException', reason: 'Receiver (<Scroller.ViewController: 0x7ff7b5e0b670>) has no segue with identifier 'SecondSegue'

我在选择器中有三个选项和一个用于转到该选择的 viewController 的按钮:

我下面的代码在第一次加载然后崩溃时工作

import UIKit


class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource 

    @IBAction func continueButtonPressed(_ sender: AnyObject) 
        self.performSegue(withIdentifier: "\(chosenState)Segue", sender: nil)
        print("no chance")
    
    @IBOutlet weak var pickerView: UIPickerView!

    var pickerData = ["First","Second","Third"]
    var chosenState = ""

    override func viewDidLoad() 
        super.viewDidLoad()
     print("Help")
        pickerView.delegate = self
        pickerView.dataSource = self
        // 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.
    

    // The number of columns of data


    // The number of rows of data
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int 
        return pickerData.count
    

    // The data to return for the row and component (column) that's being passed in
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? 
        return pickerData[row]
    
    //Called when the user changes the selection...
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) 
        chosenState = pickerData[row]
    

    func numberOfComponents(in pickerView: UIPickerView) -> Int 
        return 1
    

谁能帮我理解如何解决这个问题?

我给 Segues 命名了吗?它们的名称都相同 - 对吗?

【问题讨论】:

嗨,Boober Bunz 嗯,我错过了一些东西,我无法停止你在说什么,杰里米,你能给我更多帮助吗 " 他们的名字都一样——对吗?"不。根据您的代码,它们应该命名为FirstSegueSecondSegue" and ThirdSegue`。 阅读错误信息。很清楚。 【参考方案1】:

您必须将第二个视图控制器的 segue 标识符设置为 SecondSegue

【讨论】:

【参考方案2】:

您的SecondSegue 到您的第二个UIViewController 似乎没有正确命名。

注意,它区分大小写,必须准确命名为SecondSegue。并且在更改名称后,不要忘记使用返回键验证您的输入。

【讨论】:

以上是关于Swift 初学者,出现错误 UIPicker的主要内容,如果未能解决你的问题,请参考以下文章

无法设置默认值 UIPicker swift 2

用 contentsOfDirectory Swift 填充 uipicker

从 NSArray 使用 UIPicker 获取 titleForRow - Swift

初学者 Swift:尝试将文本分配给 UILabel [重复]

Swift:使用 UIPicker 自定义 DatePicker

Swift 的 NSDate 初学者指南