2011-08-06 4 views
0

Я получаю сообщение «NAN» в UITextField, когда пытаюсь рассчитать процентное соотношение двух UITextFields. Мой текущий код выглядит следующим образом:Получение сообщения об ошибке в UITextField

float firstFloat = [self.tex15.text floatValue]; 
float secondFloat = [self.tex16.text floatValue]; 
float answer = secondFloat/firstFloat * 100; 
self.tex20.text = [NSString stringWithFormat:@"%.1f%%",answer]; 
+0

Какая ценность firstFloat? Я подозреваю, что это ноль. – taskinoor

+0

Мне интересно, нужна ли мне какая-либо форма инструкции «IF». – TWcode

ответ

0

Я сильно подозреваю, что это проблема с вашими соединениями IBOutlet. Следующий код отлично подходит для меня:

@interface testViewController : UIViewController { 
    UITextField *tf1; 
    UITextField *tf2; 
    UILabel *result; 
} 

@end 

@implementation testViewController 

- (void)dealloc{ 
    [tf1 release]; 
    [tf2 release]; 
    [result release]; 
    [super dealloc]; 
} 

-(void) click:(id) obj { 
    float firstFloat = [tf1.text floatValue]; 
    float secondFloat = [tf2.text floatValue]; 
    float answer = secondFloat/firstFloat * 100; 
    result.text = [NSString stringWithFormat:@"%.1f%%",answer]; 
} 

-(void) viewWillAppear:(BOOL)animated { 

    tf1 = [[UITextField alloc]initWithFrame:CGRectMake(10, 10, 200, 30)]; 
    tf1.backgroundColor = [UIColor whiteColor]; 

    tf2 = [[UITextField alloc]initWithFrame:CGRectMake(10, 50, 200, 30)]; 
    tf2.backgroundColor = [UIColor whiteColor]; 

    result = [[UILabel alloc]initWithFrame:CGRectMake(10, 90, 200, 30)]; 
    result.backgroundColor = [UIColor whiteColor]; 

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    btn.frame = CGRectMake(10, 130, 50, 30); 
    [btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:btn]; 

    [self.view addSubview:tf1]; 
    [self.view addSubview:tf2]; 
    [self.view addSubview:result]; 

} 

@end 
1

NaN означает не число. Это означает, что ваш расчет не приводит к действительному числу. Мое первое предположение заключалось в том, что firstFloat - 0, что означает, что вы пытаетесь разделить на ноль. В свою очередь это может быть вызвано self.tex15: nil - убедитесь, что ваш IBOutlet подключен правильно.

+0

IBOutlet кажется прекрасным. Этот бит кода находится в отправителе идентификатора IBAction. Он используется как кнопочная кнопка, которая добавляет +1 в UITextField, который используется. NAN отображается, когда я не нахожу tex15 или tex16. – TWcode