2016-07-04 8 views
0

ないと私は私のFirstViewControlerのいくつかのテキストフィールドを持っています。私はそれらのtextFieldsを代理するようにしました。そして、コードからわかるように、プレースホルダテキストをチェックすることによってそれらの間の違いを分かりました。それは、テーブルビューに関数を入力するための下のテキストフィールド(画像参照)で作業していましたが、上にSegmentedViewとTextFieldを追加したときに、フィールドに入力された人物としてセグメント化されたビューを即座に更新したいと思っていました。そのtextFieldのプレースホルダを認識します(テストするために「0.」が追加されました。「ここに番号を入力してください」)。は、プレースホルダは、いくつかのケースで作品をチェックして、いくつかの中で、私はいくつかのアプリ(チューリングマシンシミュレータ)を作っていない

だから、要するに、それらの最初の5つのIFSは、作業とその仕事をしているが、==「0」との最後の1されていますチェック - 働いていないと私は理由を把握することはできません。私はあなたのコード内の任意の問題を見ることができなかった

This is my storyboard and document outline

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 

    if string.characters.count > 0 { 

        // za prvi: 0..9 
     if textField.placeholder == "0..9" { 

      switch string { 
      case "0": return true 
      case "1": return true 
      case "2": return true 
      case "3": return true 
      case "4": return true 
      case "5": return true 
      case "6": return true 
      case "7": return true 
      case "8": return true 
      case "9": return true 
      default: return false 
      } 
     } 
     // za drugi 
     else if textField.placeholder == "0/1/b" { 

      switch string { 
      case "0": return true 
      case "1": return true 
      case "b": return true 
      default: return false 
      } 
     } 
     // za treci 
     else if textField.placeholder == "0..9/+/-" { 

      switch string { 
      case "0": return true 
      case "1": return true 
      case "2": return true 
      case "3": return true 
      case "4": return true 
      case "5": return true 
      case "6": return true 
      case "7": return true 
      case "8": return true 
      case "9": return true 
      case "+": return true 
      case "-": return true 
      default: return false 
      } 
     } 
     // za cetvrti 
     else if textField.placeholder == "0/1/b " { 

      switch string { 
      case "0": return true 
      case "1": return true 
      case "b": return true 
      default: return false 
      } 
     } 
     // za peti 
     else if textField.placeholder == "+/-" { 

      switch string { 
      case "+": return true 
      case "-": return true 
      default: return false 
      } 
     } 
     else if textField.placeholder == "0." { 
      if ((string == "0") || (string == "1")) { 
       traka.append(Character(string)) 
       osveziTraku() 
       return true 
      } 
      else { 
       return false 
      } 
     } 
     else { 
      return true 
     } 

    } 
    else { 
     return true 
    } 
} 

答えて

0

私はちょうどそれを少しリファクタリング、それはあなたの問題を解決する可能性があります。

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 

    if string.characters.count > 0 { 

     switch textField.placeholder 
     { 
     case "0..9", "0..9/+/-", "+/-", "0/1/b" : 

      switch string { 
      case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "-", "b": return true 
      default: return false 
      } 
     case "0." : 

      switch string { 
      case "0", "1": 
       traka.append(Character(string)) 
       osveziTraku() 
       return true 
      default: return false 
      } 
     default : return false 
     } 
    } 
    else 
    { 
     return false 
    } 
} 
関連する問題