ios - 一个 Picker 的多个 TextView

标签 ios iphone swift

我似乎无法让我的两个 UITextView 在 Swift 中正确地与我的 UIPickerView 一起工作。

我尝试使用标签来区分我的 TextView,但我的第二个 TextView 无法正确更新。

谁能指出我正确的方向?

//
//  ViewController.swift


import UIKit

class ViewController: UIViewController, UITextViewDelegate, UIPickerViewDelegate {

    @IBOutlet weak var homeTeamNameTextView: UITextView!
    @IBOutlet weak var awayTeamNameTextView: UITextView!

    @IBOutlet weak var teamNamesPicker: UIPickerView! = UIPickerView()

    // Array of teams
    let teamNamesArray = ["Arsenal", "Aston Villa", "Burnley", "Chelsea", "Crystal Palace", "Everton", "Hull City", "Leicester City", "Liverpool", "Manchester City", "Manchester United", "Newcastle United", "Queens Park Rangers", "Southampton", "Stoke City", "Sunderland", "Swansea City", "Tottenham Hotspur", "West Bromwich Albion", "West Ham United"]

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        teamNamesPicker.hidden = true;
        teamNamesPicker.delegate = self
        homeTeamNameTextView.text = teamNamesArray[0]
        homeTeamNameTextView.delegate = self
        awayTeamNameTextView.text = teamNamesArray[1]
        awayTeamNameTextView.delegate = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    // returns the number of 'columns' to display.
    func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int{
        return 1
    }

    // returns the # of rows in each component..
    func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int{
        return teamNamesArray.count
    }

    func pickerView(pickerView: UIPickerView!, titleForRow row: Int, forComponent component: Int) -> String! {
        return teamNamesArray[row]
    }

    func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int) {
        if homeTeamNameTextView.tag == 0 {
            homeTeamNameTextView.text = teamNamesArray[row]
            teamNamesPicker.hidden = true;
        } else if awayTeamNameTextView.tag == 1 {
            awayTeamNameTextView.text = teamNamesArray[row]
            teamNamesPicker.hidden = true;
        }
        return
    }

    func textViewShouldBeginEditing(textView: UITextView) -> Bool{
        teamNamesPicker.hidden = false
        return false
    }


}

最佳答案

  1. 将此属性添加到您的类中:

    var activeTextView: UITextView?
    
  2. textViewShouldBeginEditing 中设置 activeTextView:

    func textViewShouldBeginEditing(textView: UITextView) -> Bool{
        teamNamesPicker.hidden = false
        activeTextView = textView
        return false
    }
    
  3. pickerView:didSelectRow:inComponent: 中使用 activeTextView 更新正确的 TextView :

    func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int) {
        activeTextView?.text = teamNamesArray[row]
        teamNamesPicker.hidden = true
        return
    }
    

关于ios - 一个 Picker 的多个 TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27624016/

相关文章:

ios - 使用mvvm模型的RxMoya请求总是在observer.onError(error)中崩溃

iphone - 方法完成后, float 不保留其值

iphone - 动画 UIView 增长/缩小

ios - Swift - 在类里面为自己分配一个 NIB

iphone - UITabBarController 不显示 tabbarItems 名称

dictionary - 合并具有多种类型或 Any/AnyObject 类型的字典

ios - 如何在 Storyboard中设置条件静态 tableview 单元格内容?

swift - 如何通过访问多个 UIView 的 isHidden 属性来显示它们?

ios - 对于 iOS 8 中的 App Extensions,我必须使用嵌入式框架来共享代码吗?

iphone - 同时按两个按钮