UITextfield и null - PullRequest
       2

UITextfield и null

0 голосов
/ 04 декабря 2011

Предположим, есть код для проекта iPhone:

IBOutlet UITextField* numberDisplay;
@property (strong,nonatomic) IBOutlet UITextField *numberDisplay;

в файле реализации и

@synthesize numberDisplay;

в файле реализации. Также в реализации находится

-(IBAction)numberClicked:(id)sender {  
   UIButton *buttonPressed = (UIButton *)sender;  
   int val = buttonPressed.tag;  

   if ( [numberDisplay.text compare:@"0"] == 0 ) {  
     numberDisplay.text =[NSString  stringWithFormat:@"%d", val ];  
   }
   else {  
     numberDisplay.text = [NSString  
     stringWithFormat:@"%@%d", numberDisplay.text, val ];  
   }
}

Когда я запускаю приложение, в поле UIText не отображается изображение, даже если соединения были сделаны с IB, и это подтверждается при просмотре инспектора. Даже в качестве теста, если я добавлю строки

numberDisplay.text = @"a";
NSLog(@"the value is %@",numberDisplay.text);   
NSLog(@"the value is %@",numberDisplay);

Я получаю "значение равно (null) в обоих случаях.

Ответы [ 2 ]

0 голосов
/ 04 декабря 2011

Отбросьте IBOutlet из ивара , на самом деле отбросьте ивар, современная среда его выполнения синтезирует его для вас.

Брось ивар и поменяй на:

@property (strong,nonatomic) IBOutlet UITextField *numberDisplay;

А это:

@synthesize numberDisplay = _numberDisplay;

Эта строка автоматически создаст ивар с именем _numberDisplay.

-(IBAction)numberClicked:(id)sender {  
    UIButton *buttonPressed = (UIButton *)sender;  
    int val = buttonPressed.tag;  
    if ( [_numberDisplay.text compare:@"0"] == 0 ) {  
        _numberDisplay.text =[NSString  stringWithFormat:@"%d", val ];  

    } 
    else {  
        _numberDisplay.text = [NSString stringWithFormat:@"%@%d", _numberDisplay.text, val ];  
    }

}

Обратите внимание, что из вашего собственного класса вы можете использовать self.numberDisplay или _numberDisplay для ссылки на текстовое поле.

Есть большая вероятность, что вам придется восстановить соединение в IB, когда вы закончите. Не забудьте отключить все соединения, признанные недействительными.

0 голосов
/ 04 декабря 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...