【问题标题】:Update Label by using pickerview and text field使用pickerview和文本字段更新标签
【发布时间】:2016-03-29 18:58:35
【问题描述】:

我有一个存放值的 PickerView。此值将使用用户文本字段输入进行计算。结果将显示在标签中。这对我行得通。 通过启动应用程序,文本字段的固定编号为 1。 我现在如何使用 Pickerview 自动更新我的标签? 我阅读并尝试了很多东西,但它不起作用。 也许这是一件小事,但我没看到。

import UIKit

class BalkenbewehrungVC: UIViewController, UIPopoverPresentationControllerDelegate, UIPickerViewDataSource, UIPickerViewDelegate, UITextFieldDelegate {

    // Deklarationen Pickerview
    var multiplicator : Double = 0.0

    let multiplicators = [0.0,6.0,8.0,10.0,12.0,14.0,16.0,20.0,25.0,26.0,28.0,30.0,32.0,36.0,40.0,50.0]

    let PI = 3.1415

    // Pickerview füllen
    var pickerDataSource = ["---","Ø 6","Ø 8","Ø 10","Ø 12","Ø 14","Ø 16","Ø 20","Ø 25","Ø 26","Ø 28","Ø 30","Ø 32","Ø 36","Ø 40","Ø 50"]


    // Picker im aktivieren
    @IBOutlet weak var Pickerview: UIPickerView!


    // Ausgabewert As = xxxx cm
    @IBOutlet var AusgabePicker: UILabel!

    // Eingabe Anzahl Stäbe
    @IBOutlet var AnzahlStab: UITextField!

      @IBAction func test(sender: UITextField) {

        if AnzahlStab.text!.isEmpty {

            AnzahlStab.text = "1"

            let result1 = (multiplicator / 10) * (multiplicator / 10) * PI / 4 * 1

            AusgabePicker.text! = String(format:"%.3f", result1)


        } else {

            let result = (multiplicator / 10) * (multiplicator / 10) * PI / 4 * (AnzahlStab.text! as NSString).doubleValue
            // let resultString = "\(result)"


            AusgabePicker.text = String(format:"%.3f", result)
        }

    }

// Picker - feste Reihen
    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
        return 1
    }

    // Picker - Aufaddierung neuer Reihen
    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return pickerDataSource.count

    }

    // Picker - Datenübernahme multiplicator in Picker
    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return pickerDataSource[row]


    }

    // Picker - Wertefestlegung Picker
    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        multiplicator = multiplicators[row]
        _ = NSNumberFormatter.localizedStringFromNumber(NSNumber(double: multiplicator), numberStyle:.DecimalStyle)

    }

【问题讨论】:

    标签: ios swift ios7 swift2 xcode7


    【解决方案1】:

    pickerViewdidSelectRow 方法中,将标签的文本设置为新计算的值。

    更新:要根据 textField 的输入更新标签的文本,请在 ViewControllerviewDidLoad 方法中添加此行

    AnzahlStab.delegate = self
    

    然后添加textFieldDidEndEditing 方法,并在其中将标签的文本更新为新值。当您完成编辑文本字段时调用此方法。

    【讨论】:

    • Pickerview 更新标签吧!但是现在文本字段输入不直接更新标签。只有在旋转pickerview之后。谢谢
    • 谢谢。我必须在哪里添加 textFieldDidEndEditing 方法
    • 是的,很好。拥有它:o)。非常感谢您的帮助
    【解决方案2】:

    需要在选择器视图didSelectRow 中调用函数测试。或者只需将您的didSelectRow 替换为以下代码。

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
            multiplicator = multiplicators[row]
            _ = NSNumberFormatter.localizedStringFromNumber(NSNumber(double: multiplicator), numberStyle:.DecimalStyle)
            self.test(AnzahlStab)
        }
    

    希望这个答案对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-30
      • 2020-03-12
      • 1970-01-01
      相关资源
      最近更新 更多