【问题标题】:pickerView shows up as question marks instead of data?pickerView 显示为问号而不是数据?
【发布时间】:2014-11-04 23:34:33
【问题描述】:

我正在尝试向我的 iphone 应用程序添加一个pickerview,但它没有显示我的数组中的字符串,而是显示问号。有谁知道为什么?在过去的一个小时里,我一直在试图弄清楚......这是我的包含pickerview的控制器代码:

class NewIssueViewController: UIViewController, UIPickerViewDelegate {

    var componentArr = ["component1","component2","component3","component4"]

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.


    }

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

    @IBAction func CancelPressed(sender: AnyObject) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }

    @IBAction func AddPressed(sender: AnyObject) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }

    func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int {
        return 1
    }

    func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int {
        return componentArr.count
    }

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

【问题讨论】:

    标签: iphone swift xcode6


    【解决方案1】:

    您设置了选择器视图的数据源,但没有设置其委托。

    因此,pickerView:titleForRow: 永远不会被调用。

    【讨论】:

    【解决方案2】:

    您应该在情节提要中连接PickerViewDatasourceDelegate,或者以编程方式设置它们。见下图。

    【讨论】:

      【解决方案3】:

      新 Swift 3 已弃用上述方法,

      我已经实施了以下措施以使其正常工作。 (在参数中添加了一些下划线。

       func numberOfComponents(in pickerView: UIPickerView) -> Int {
          return 1
      }
      
      func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
          return pickerDataSource.count;
      }
      
      func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
          return pickerDataSource[row]
      }
      
      func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
      {
          /*if(row == 0)
          {
              self.view.backgroundColor = UIColor.whiteColor();
          }
          else if(row == 1)
          {
              self.view.backgroundColor = UIColor.redColor();
          }
          else if(row == 2)
          {
              self.view.backgroundColor =  UIColor.greenColor();
          }
          else
          {
              self.view.backgroundColor = UIColor.blueColor();
          }*/
      }
      

      【讨论】:

        【解决方案4】:

        只需在 viewDidLoad() 方法上添加 self.pickerOutletReference.delegate = self

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-08-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多