2015-04-22 76 views
2

我正在處理我的第一個Swift ios應用程序。Swift中的第一個iOS應用程序 - UIPickerView中的問號

無法從pickerData中將數據獲取到我的選擇器中,但我只能得到問號而不是真正的值。我想這與委託有關,但不知道有什麼錯。

import UIKit 
import CoreData 

class NewWorkoutController: UIViewController,UIPickerViewDelegate, UIPickerViewDataSource { 

@IBOutlet weak var workoutDistance: UITextField! 

let pickerData = ["11","12","13","14","15"] 

// Data Sources 
func numberOfComponentsInPickerView(distancePickerView: UIPickerView) -> Int { 
    return 1 
} 
func pickerView(distancePickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return pickerData.count 
} 
// Delegates 
func pickerViewReturnRow(distancePickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! { 
    return pickerData[row] 
} 
func pickerViewText(distancePickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    workoutDistance.text = pickerData[row] 
} 
func doneDistancePicker() { 
    workoutDistance.resignFirstResponder() 
} 
func cancelDistancePicker() { 
    workoutDistance.resignFirstResponder() 
} 

@IBAction func textFieldDistanceEditing2(sender: UITextField) { 

    // Create picker view 
    var distancePickerView: UIPickerView 
    distancePickerView = UIPickerView(frame: CGRectMake(0, 200, view.frame.width, 300)) 
    distancePickerView.backgroundColor = .whiteColor() 

    distancePickerView.showsSelectionIndicator = true 
    distancePickerView.delegate = self 
    distancePickerView.dataSource = self 

    // Create toolbar 
    var toolBar = UIToolbar() 
    toolBar.barStyle = UIBarStyle.Default 
    toolBar.translucent = true 
    toolBar.tintColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1) 
    toolBar.sizeToFit() 

    // Create buttons 
    var doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "doneDistancePicker") 
    var spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil) 
    var cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: "cancelDistancePicker") 

    // Assign buttons to toolbar 
    toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false) 
    toolBar.userInteractionEnabled = true 

    // Add pickerview and toolbar to textfield 
    workoutDistance.inputView = distancePickerView 
    workoutDistance.inputAccessoryView = toolBar 

    sender.inputView = distancePickerView 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
} 
} 

回答

5

這個函數的簽名是錯誤的:

func pickerViewReturnRow(distancePickerView: UIPickerView, 
    titleForRow row: Int, 
    forComponent component: Int) -> String! 

應該

func pickerView(pickerView: UIPickerView, 
    titleForRow row: Int, 
    forComponent component: Int) -> String! 

結果該方法(它提供的標題爲列在你的選擇器)ISN」不會被打電話。

+0

nhgrif,感謝您的編輯。我不小心抄了太多。 –

+0

啊哦,ReturnRow是單元格,壞的複製粘貼:(非常感謝! –

+0

可選的委託方法的一個問題是,如果你的方法名稱錯誤,對象默默地不會調用方法。總是記住要檢查你的方法名稱,然後設置一個斷點(或者插入一個println)並確保你的方法真的被調用了。 –

相關問題