пользовательский интерфейс условного форматирования

#objective-c #cocoa-touch #ios4 #xcode4

#objective-c #cocoa-touch #ios4 #xcode4

Вопрос:

Приложение, над которым я работаю, по сути, представляет собой калькулятор. Что я хочу сделать, так это настроить что-нибудь так, чтобы на экране результатов, если все ответы = 60 или выше, появлялась большая зеленая галочка (изображение, которое я добавлю) и какой-нибудь текст выше или ниже, в котором говорится, что вы прошли. Если нет, я хочу, чтобы появился красный крестик, сообщающий о вашей ошибке.

Я знаю, что это должно быть просто, я просто не знаю, где искать ответы. Если бы кто-нибудь мог указать мне правильное направление ссылкой или чем-то еще, чтобы я мог прочитать об этом, это было бы здорово. потому что я пытался искать, но, честно говоря, я просто не знаю, что искать.

Комментарии:

1. Вводит ли пользователь числа в поля?

2. да, пользователь вводит числа в текстовое поле. Вычисления выполняются для тех чисел, которые введены. и затем на экране результатов появляется оценка, и именно там я хочу, чтобы появилась зеленая галочка или красный крестик

Ответ №1:

Итак, вам в основном просто нужно получить текст из UITextField в виде целого числа вот так:

 int sumOfFields  = [[myUITextField text] intValue];
  

Вы бы сделали это для всех своих полей. Затем вам нужно проверить, больше или равно 60 или нет:

 if (sumOfFields >= 60) {
    [self setValidationUI:TRUE];
}
else {
    [self setValidationUI:FALSE];
}
  

Где setValidationUI — это метод, который принимает логическое значение, определяющее, должен ли он отображать большую зеленую галочку или немного красный крест, например:

 -(void)setValidationUI:(BOOL)isValid {
    if (isValid) {
        [resultsImage setImage:[UIImage imageNamed:@"checkmark.png"]];
        [resultsTextField setText:@"You Passed!"];
    }
    else {
        [resultsImage setImage:[UIImage imageNamed:@"BigUglyRedX.png"]];
        [resultsTextField setText:@"You Fail..."];
    }
}
  

файл заголовка

 - (void)setValidationUI:(bool)isValid;

@property (nonatomic, retain) IBOutlet UIImageView *resultsImage;
@property (nonatomic, retain) IBOutlet UILabel *resultsLabel;
  

Комментарии:

1. Хорошо, я понимаю, что беру текст, который будет отображаться в моих ярлыках на экране результатов, и присваиваю им значение целого числа. Затем используйте инструкцию if / else, чтобы проверить, равно ли оно >= 60. Но как «setValidationUI» отображает зеленую галочку или красный крестик? если я собираюсь импортировать эти 2 изображения в свой проект. как «setValidationUI» вызывает эти изображения для отображения и где он будет их отображать?

2. @Shaun: Я обновил свой код функцией, о которой я говорил. Теперь все это имеет смысл?

3. Да, я так думаю. Итак, -(void) будет отображаться в моем приложении delegate.h amp; .m ?? и затем, какой бы заполнитель изображения и текстовое поле или метку я ни настроил на экране результатов, я связываю их этим методом в IB?

4. Да, вам нужно поместить имя метода -(void)setValidationUI:(BOOL)isValid; в заголовок, а весь метод — в m-файл. А затем замените resultsImage и resultsTextField именами, которые вы дали этим представлениям в Interface Builder.

5. Вам нужно, чтобы они были названы в Interface Builder. Затем вам нужно добавить свойства в представление, которое их использует: @property (nonatomic, retain) UIImageView *myImageView; Конечно, используйте свое имя для представлений вместо ‘myImageView’.