Цель C: использовать тег для текстового поля - PullRequest
0 голосов
/ 06 апреля 2011

У меня есть этот код

- (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 (second textField). Я думаю, что я должен использовать тег, но я не знаю, как. Вы можете мне помочь?

Ответы [ 3 ]

0 голосов
/ 06 апреля 2011

В общем, когда вам нужно применить один и тот же код к разным объектам или значениям, вы определяете метод следующим образом:

- (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
}

Конечно, можно использовать теги, назначая num для textField.tag в updateNumberField: методе. Это сэкономит вам конверсию от NSString до int.

Если вам нужно добавить какие-либо дополнительные значения к вашим текстовым полям, рассмотрите возможность создания подкласса и добавьте в него все необходимые функции.

0 голосов
/ 09 июня 2011

В .h файле мы объявляем код для текстового поля, то есть:

uitextfield *tf;

В файле .m мы реализуем этот файл.

В viewdidload:

{
    tf=[uitextfield alloc]initwithframe:(cgrectmake(x axis,y axis, width, height))];
    [self.view addsubview:tf];
}
0 голосов
/ 06 апреля 2011

присваивать тег каждому текстовому полю в IB, если вы используете IB и в кодовом вызове setTag для каждого текстового поля.

...