立即将文本字段数据传递给UILabel

时间:2014-09-12 04:34:20

标签: ios objective-c uitextfield uilabel

我需要将UITextField数据传递给UILabel,同时将文本输入到文本字段中。

例如:如果我输入“10美元”。在文本字段中,它应该立即显示在UILabel上而不按任何按钮。

基本上我希望价格为“10.55美元”,但你知道我的意思。

@property (weak, nonatomic) IBOutlet UITextField *PriceTextField;
@property (nonatomic, strong) NSString *PriceString;
@property (strong, nonatomic) IBOutlet UILabel *PriceLabel;

3 个答案:

答案 0 :(得分:1)

您可以通过实施shouldChangeCharactersInRange委托来实现这一目标。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

   @try{

      self.PriceLabel.text =  [textField.text stringByReplacingCharactersInRange:range withString:string];
   }
   @catch (NSException *exception){

      NSLog(@"%s\n exception: Name- %@ Reason->%@", __PRETTY_FUNCTION__,[exception name],[exception reason]);
   }
   @finally{

      return YES;
   }
}

答案 1 :(得分:1)

编辑:看看@ rmaddy对此的评论,因为这是最好,最干净的方式。


不幸的是,UITextFieldDelegate每次文本字段更改时都没有通知您,但您可以使用name:UITextFieldTextDidChangeNotification

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(updateLabelFromTextField:)
                                             name:UITextFieldTextDidChangeNotification
                                           object:nil];

把它放在你viewDidLoad或任何有意义的地方。 然后简单地说:

- (void)updateLabelFromTextField:(NSNotification *)notification{
    If (notification.object == self.PriceTextField){
        UITextField *textField = (UITextField *) notification.object;
        self.PriceLabel.text = textField.text;
    }
}

答案 2 :(得分:-1)

实现此UITextField委托方法并更新其中的标签

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    self.label.text =  [textField.text stringByAppendingString:string];

    return YES;
}