在 UIPickerView 上选择行时如何使用信息填充第二个视图控制器

Posted

技术标签:

【中文标题】在 UIPickerView 上选择行时如何使用信息填充第二个视图控制器【英文标题】:How to populate a second view controller with information when a row is selected on a UIPickerView 【发布时间】:2019-06-20 15:45:55 【问题描述】:

我正在创建我的第一个应用程序,我希望在 UI 选择器中选择项目时在第二个视图控制器中显示数据。

当点击我的第一个视图控制器上的搜索栏时,我希望出现一个 UI 选择器。 UI 选择器将显示国家名称。 UI 选择器将使用所选国家名称填充搜索栏。当按下按钮时,我想对第二个视图控制器执行 segue,然后将填充有关所选国家/地区的信息。我正在尝试开发我的第一个应用程序,但我似乎找不到关于这个确切主题的任何教程。如何在选择搜索栏时显示 UI 选择器?如何根据选定的选取器行将信息传递给第二个视图控制器?

以下是我自己编写的代码。否则,我难住了。

import UIKit

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate 
    @IBOutlet weak var countryPicker: UIPickerView!
    @IBOutlet weak var goButtonPressed: UIButton!

    var countryName : [String] = [String]()

    override func viewDidLoad() 
        super.viewDidLoad()

        self.countryPicker.delegate = self
        self.countryPicker.dataSource = self

        countryName = ["Australia", "Bolivia", "Croatia", "Denmark", "Estonia", "France", "Germany", "Hungary"]
    

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

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int 
        return countryName.count
    

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? 
        print (countryName[row])
        return countryName[row]
    

【问题讨论】:

【参考方案1】:

我会这样做:

首先,在您的第一个 View Controller 中声明一个变量,并为其分配 pickerView 的第一个值:

var selectedCountryName: String = countryName[0]

然后,声明以下方法来捕获选择器视图选择并将其分配给之前声明的变量:

// Capture the picker view selection
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent 
component: Int) 
     selectedCountryName = countryName[row]

然后,在您的第二个视图控制器中,声明相同的 selectedCountryName 变量:

var selectedCountryName: String = country[0]

最后,在第一个视图控制器的 prepareForSegue 方法中,将选定的国家名称从第一个视图控制器传递给第二个视图控制器:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
        let destinationVC = segue.destination as! SecondViewController
        destinationVC.selectedCountryName = selectedCountryName 
    

【讨论】:

以上是关于在 UIPickerView 上选择行时如何使用信息填充第二个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

而在 indexPath 的 didselectrow 上选择取消选择行时会崩溃

在 UICollectionView 选择上选择 UITableView

在单击反应表上选择行

如何使用javascript触摸事件在触摸屏上选择文本

如何在数据基础上选择分区名称

如何使用findelementbyanrdroiduiautomator在wheelview上选择文字?