1

次のコードがあります。エラーは発生しません。アプリがクラッシュします。正しく初期化されたかどうかわかりません。どうぞ、どんな助けでも大歓迎です。

@IBOutlet weak var myCostPicker: UIPickerView!

var costCode = String()

override func viewDidLoad() {
    super.viewDidLoad()
    if let projectNum = projectNum {
        projectNumTitle.title = projectNum

    }

    updateLabels()
    myCostPicker.dataSource = self
    myCostPicker.delegate = self
    myCostPicker.showsSelectionIndicator = true
    self.view.backgroundColor = UIColor.blackColor()
}

let pickerData = ["Nothing", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q"]

let costCodeData = ["Nothing", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q"]

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

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

// MARK: - Picker Delegates
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String {
    return pickerData[row]
}

func pickerView(pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {
    let titleData = pickerData[row]
    var myTitle = NSAttributedString(string: titleData, attributes: [NSFontAttributeName:UIFont(name: "Georgia", size: 15.0)!,NSForegroundColorAttributeName:UIColor.whiteColor()])
    return myTitle
}

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    myLabel.text = pickerData[row]
    costCode = costCodeData[row]
}

メンタルブロックに到達。私のノギンを瓶詰めする人が必要です。感謝。

4

1 に答える 1

2

私があなたの質問を正しく理解していれば、ストーリーボードまたは XIB でピッカーの設定が行われているようですが、ピッカーは pickerData 配列からデータを入力していないようです。

私はあなたのコードを試してみましたが、非常にうまく機能しています.IBOutletのリンクが正しいView Controllerクラスにリンクされていない可能性があります。また、ストーリーボード/XIBアプローチを使用している場合は、.storyboardからデータソースとデリゲートを追加してみてください.または .xib ファイル自体

ここに画像の説明を入力

また

面白い理由で pickerData がフラッシュされている可能性があるため、デバッガーを使用して確認することができます。

すべての設定が正しく行われているのに、最終的な出力が表示されない場合、新しいココア タッチ クラス ファイルを作成するときに、それらが正しく作成されないことがあるので、それらを削除して再度作成します (私は本当にばかげていることを知っていますが、本当に時々うまくいきます)

于 2015-03-20T08:44:00.277 に答える