2016-02-27 34 views
0

我正在開發便箋應用程序,當文本視圖爲空時,應該禁用完成按鈕,因此用戶無法將空的便箋保存到數據庫中,否則按鈕應該啓用。當文本視圖爲空時,該按鈕將被禁用,否則啓用

這是我的代碼在下面,我的嘗試失敗了;我怎麼能解決這個問題?

@IBOutlet weak var textView: UITextView! 
@IBOutlet weak var done: UIBarButtonItem! 

override func viewDidLoad() { 
     super.viewDidLoad() 

     title = note?.text 
     if (self.textView.text.isEmpty){ 
      done.enabled = false 
     } 
     if let noteContent = note 

     { 
      textView.text = noteContent.text 
     } 

     self.navigationController!.toolbarHidden = false; 
    } 

    func textViewShouldBeginEditing(textView: UITextView) -> Bool{ 
done.enabled = true 

    return done.enabled 
} 
+0

「我的嘗試都失敗了」 他們在哪裏?我沒有看到你迴應文中的變化。 – matt

+0

@matt查看上面的代碼,在'viewDidLoad'函數中,如果textview是空的而不是禁用按鈕,並且在'textViewShouldBeginEditing'函數中啓用完成按鈕如果文本視圖不爲空 –

回答

2
  1. 讓您的視圖控制器符合UITextViewDelegate協議
  2. 在Interface Builder中,在文本視圖,視圖控制器連接delegate
  3. 以下函數添加到您的視圖控制器:

func textViewDidChange(textView: UITextView) { 
    if textView == self.textView { 
     self.doneButton.enabled = !textView.text.isEmpty 
    } 
} 
+0

它已經工作了,非常感謝:) –

+0

你應該更新swift3。 – alicanbatur

0

嘗試爲您使用其他委託方法的目的。這是例子:

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var button: UIButton! 
    @IBOutlet weak var textView: UITextView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     textView.delegate = self 

     if (textView.text.isEmpty) { 
      button.enabled = false 
     } 
    } 
} 

extension ViewController: UITextViewDelegate { 

    func textView(textView: UITextView, range: NSRange, replacementText text: String) -> Bool 
    { 
     if (!textView.text.isEmpty) { 
      button.enabled = true 
     } else { 
      button.enabled = false 
     } 
     return true 
    } 
} 
+0

謝謝,但它沒有工作 謝謝:) –

+0

嘗試學習一點關於UITextViewDelegate這段代碼現在在我的項目中工作 –

0

試試這個在textViewDidChange方法:

yourBarButtonItem.isEnabled = !(yourTextField.text?.isEmpty ?? false) 
相關問題