2011-04-06 63 views
0

使用標籤我有這樣的代碼目標C:對於文本字段

- (IBAction) addNumberField { 


if ([firstField.text intValue] == 3) 
{ 
    firstField.text = @"0"; 
} 
else 
{ 
    int num = [firstField.text intValue]; 
    num = num + 1; 
    firstField.text = [[NSNumber numberWithInt:num] stringValue]; 
} 
} 

你可以看到,這個IBAction爲我增加文本框的值的一個按鈕,範圍爲0-3。但是我想要將這個IBAction用於其他文本字段,不僅用於firstField,還用於secondField(第二個textField)。我認爲我應該使用標籤,但我不知道方式。你可以幫我嗎?

回答

0

在一般情況下,當您需要將相同的代碼應用到不同的對象或值,可以定義這樣的方法:

- (void)updateNumberField:(UITextField *)textField { 
    int num = [textField.text intValue]; 
    num = (num + 1) % 4; // this will wrap num to the range [0, 3] 
    textField.text = [NSString stringWithFormat:@"%d", num]; 
} 

- (IBAction)addNumberField { 
    [self updateNumberField:firstField]; 
    [self updateNumberField:secondField]; 
    // you can do the same for whatever field you like 
} 

當然的,通過分配numtextField.tag使用標籤在updateNumberField:方法中。它將爲您節省從NSStringint的轉換。

如果您需要附加任何附加值到您的文本字段,請考慮創建一個子類並將所有必需的功能添加到它。

+0

您的代碼同時更新文本字段,我有兩個不同的按鈕,一個用於第一個文本字段,第二個按鈕用於第二個textfiled。 – CrazyDev 2011-04-07 07:28:35

+0

@blackguardian在第二個按鈕的動作中,您可以輕鬆地在第一個按鈕的動作中調用'[self updateNumberField:firstField]',並且'[self updateNumberField:secondField]''。 – 2011-04-07 12:46:07

+0

其實我是這樣做的......謝謝 – CrazyDev 2011-04-07 13:06:28

0

如果您正在使用IB並在代碼中爲每個文本字段調用setTag,則爲IB中的每個文本字段分配標記。

+0

又是怎樣在我的代碼? [[textfieldgeneral setTag:1] intValue] == 3 ???? – CrazyDev 2011-04-06 17:04:08

+0

你爲什麼要在這裏調用intValue? – saadnib 2011-04-06 17:05:30

+0

如果你想分配標籤使用[textfield setTag:1];如果你想比較一個已經分配的標籤值到一個整數使用[textfield標籤] == 1 – saadnib 2011-04-06 17:06:53

0

.h文件中,我們聲明代碼文本框,即:

uitextfield *tf; 

.m文件中,我們實現一個。

在viewDidLoad中:

{ 
    tf=[uitextfield alloc]initwithframe:(cgrectmake(x axis,y axis, width, height))]; 
    [self.view addsubview:tf]; 
}