2015-12-23 3 views
0

У меня есть PickerView, который задает значения депозита. Эти значения будут вычисляться с использованием ввода текстового поля пользователя. Результат будет отображаться на этикетке. Это подходит для меня. При запуске приложения текстовое поле имеет номер исправления 1. Как я могу обновить свой ярлык автоматически с помощью Pickerview? Я читаю и пробую много вещей, но это не работает. Может быть, это мелочь, но я ее не вижу.Обновить ярлык с помощью 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) 

    } 

ответ

0

В методе didSelectRow для pickerView, установите текст лейбла к вашему вновь вычисленного значения.

Update: Для того, чтобы обновить текст лейбла в зависимости от ввода в текстовое поле, в внутри viewDidLoad метода ваши ViewController «с, добавьте эту строку

AnzahlStab.delegate = self 

, а затем добавить метод textFieldDidEndEditing, и внутри него обновить лейбла текст к новому значению. Этот метод вызывается, когда вы закончите редактирование текстового поля.

+0

Pickerview update label now! Но теперь ввод текстового поля не обновляет ярлык напрямую. Только после прядения. Спасибо – Andreas

+0

@ Андреас снова проверит мой ответ. Я обновил его. – hannad

+0

Спасибо. Где я должен добавить метод textFieldDidEndEditing – Andreas

0

Необходимо вызвать функциональный тест в режиме выбора. 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) 
    } 

Надеется, что это ответ поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^