2017-09-01 6 views
1

私はxcode8 + swift3を使用しています。より良い方法でUITextFieldを特定する方法

コントローラの表示に複数のUITextFieldがあります。各UITextFieldにはコードでアウトレット接続があります。

私はUITextFieldを識別するために、「tag」を使用することができます知っているが、私だけ(私はタグが働くように私のXcodeは常に、番号のみを動けなく、tagフィールドの文字列値を試してみました)タグとして番号を使用することができそうです。

しかし、私は次のように私のコードにマジックナンバーを使用したくない:私は疑問に思って

If (textField.tag == 0) { 

} 

、UITextFieldのを識別するためのコードでより良い方法以上の記述方法はありますか?

+3

:' @property(アトミック)NSIntegerタグは、 '実際には、テキストを入力することはできません。それぞれにIBOutletがある場合は、代わりに 'if(textField == myTextFieldForSomething)'を実行してください。 – Larme

+0

@Larme大きなポイント;あなたはそれを答えにすることができますか?多くの場合、それは私よりも優れたアプローチです。 –

+0

@RobNapier私はそこにいくつかの質問があるはずだと確信しています(それを見つける必要があるかもしれません。彼らは通常、タグで答えたり、プロパティがある場合は "=="(ポインタの等価性)を指示します。 https://stackoverflow.com/questions/3747315/iphone-uitextfield-multiple-textfields-with-the-same-delegate https://stackoverflow.com/questions/5747889/two-uitableview-in-the-same-view – Larme

答えて

2

タグは正しいツールです。それらを追跡する列挙型を作成するだけです。

enum FieldIdentifier: Int { 
    case name = 0 
    case age = 1 
} 

if let fieldIdentifier = FieldIdentifier(rawValue: textField.tag) { 
    switch fieldIdentifier { 
    case .name: ... 
    case .age: ... 
    } 
} 

==の使用についてのLarmeさんのコメントも適切であることに注意してください、あなたはすでに店舗を持っている場合は、より良いです。)

tag` `の定義です
関連する問題