2016-10-07 7 views
0

私はカスタムピッカービューを持っています。ボタンをもう一度クリックすると、ピッカービューが閉じられます。しかし、非表示のテキストが空白になり、同じ状態を維持しません(「選択」は、選択した内容を反映するためにピッカービューから何かを選択すると、ピッカービューを開き、そのテキストが変化するボタンです。あなたはunbutton内のテキストを変更すると空白になることはありません、もう一度選択ボタン(ないピッカービュー)をクリックした場合で起こるしたい。Swift 3.0文字列の問題

var pickValue:AnyObject? { 
     didSet{ 
      if let pickValue = pickValue{ 
       Select.setTitle("\(pickValue)", for: UIControlState()) 
      }else{ 
       Select.setTitle("Select", for: UIControlState()) 
      } 
     } 
    } 

@IBAction func Show(_ sender: AnyObject) { 
     let pickercontrol = LCTableViewPickerControl(
      frame: CGRect(x: 0, y: self.view!.frame.size.height + 150, width: view.bounds.size.width - 50, height: 150), 
      title: "Please pick an item", 
      value: pickValue, 
      items: ["minute", "hour", "day", "month", "year"], 
      offset: CGPoint(x: 0, y: 0)) 
     pickercontrol?.tag = 1 
     view.addSubview(pickercontrol!) 
     pickercontrol?.show(in: view) { [weak self](sender, item) in 
      guard let view = sender as? LCTableViewPickerControl else{ 
       return 
      } 
      view.dismiss() 
      self?.pickValue = item as AnyObject? 
     } 


    } 

The image when the picker view is initialized and your able to pick a value

Here is a picture of the problem. After you click the button again. The picker view dismisses and the text inside the button becomes blank. I want to change it so that if the view is dismissed and no value is chosen from the picker view then the text inside the button stays the same

+1

今後「コードスニペット」ではなく「コードサンプル」の形式を使用してください。コードスニペットは、短い1行のコードまたは関数名をスタイリングするためのものです。コードサンプルフォーマット(4つのスペースをインデントするか、フォーマットバーのツールを強調表示してクリックすることによって行われます)は、ロングコード用であり、スクロールバーなどを追加し、より大きなコード部分を読みやすくします。 – Don

+0

私はそれをしました。あなたはそれを修正できると思いますか? – Rosalind

+0

私は残念なことに迅速については何も知らない。このサイトは質の高い評価がされています。誰かが答えを見つけることができますように願っています。乾杯! – Don

答えて

0

をあなたが必要としますどのcontrolStateを設定するかを設定します。for UIControlState.normal

+0

オプションを強制的にアンラッピングするのではなく、安全にアンラップすることを検討することもできます。 LCTableViewPickerControl初期化子がオプションを返す場合は、初期化して、次に言う: 'guard let picker = pickercontrol else {return} ' これは、サブビューとして追加するときに強制アンラップ(そしてnilの場合はクラッシュ)を防ぎます。 – creeperspeak

+0

最初にボタンのタイトルを設定していますか?あなたが 'viewWillAppear'でそれをやっているのであれば、それはモーダルビューを解除した後にもう一度起動します。そこでタイトルを設定すると、初期値は何でも設定されます。私はそのような限られた画像で何が起こっているのか十分に理解していません。 – creeperspeak

+0

私は今スカイプすることができません。 githubや何かのコードをお持ちですか? – creeperspeak

0

もう1つのオプションは、現在のテキストを保存することです。また、[解除]ボタンをクリックすると、選択したタイトルが選択したタイトルが以前に保存された文字列に設定されます。

これにより、いくつでも選択をスクロールでき、解雇時に元の値に戻ることができます。