2016-10-07 141 views
0

我有一個自定義選擇器視圖,它工作得很好,但是它們有一個問題。您有能力再次點擊該按鈕並且選取器視圖被解除。但是,如果解除了解開按鈕中的文本變爲空白並且不能保持不變(「選擇」是一個按鈕,打開選擇器視圖,當您從選取器視圖中選擇某些內容以反映您選擇的內容時,它的文本會發生變化。希望發生的是,如果你點擊選擇按鈕(未選擇器視圖)再次,然後在解開該文本將不會改變,變得空白。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

請務必在將來使用「代碼示例」格式而不是「代碼段」。代碼片段用於設計簡短的單行代碼或函數名稱。代碼示例格式(通過縮進四個空格或突出顯示並單擊格式欄中的工具完成)用於長代碼並添加滾動條等,並使較大的代碼部分更具可讀性。 – Don

+0

我做到了。你認爲你可以修復它嗎 – Rosalind

+0

我不知道什麼快速不幸。該網站是同行評審的質量,我只是幫助你的帖子看起來更吸引人,以幫助他人。希望有人能找到答案。乾杯! – Don

回答

0

您需要設置你想要的控制狀態。for UIControlState.normal

+0

您可能還想考慮安全地解開您的選擇權,而不是強行解開它們。如果LCTableViewPickerControl初始化程序返回一個可選項,則可以初始化它,然後說: 'guard let picker = pickercontrol else {return}' 這會使您無法在添加子視圖時強制解包(如果爲零,則會崩潰)。 – creeperspeak

+0

你最初在哪裏設置按鈕標題?如果你在'viewWillAppear'中做了它,它會在你解散模態視圖後再次觸發,所以如果你在那裏設置標題,它會設置爲初始值。我沒有完全理解這樣一幅有限的圖片。 – creeperspeak

+0

我現在無法Skype。你在github上有你的代碼嗎? – creeperspeak

0

另一種選擇是存儲當前文本,並在點擊dismiss按鈕時將採摘選擇標題設置爲先前存儲的字符串。

這將使您能夠滾動進行任意數量的選擇,並在解除時恢復爲原始值。