0

我有一个带有几个文本字段的单页应用程序。一个字段是下拉菜单,用户可以使用它选择要填写此文本字段 (text1) 的项目。填充此文本字段(text1)后,如何自动更新其他文本字段(text2、text3 等)。

例如:我有三个文本字段,text1、text2、text3。在后端,我在它们之间有一个匹配的数组列表,因此来自 text1 的值将能够找到 text2 和 text3 的正确值。但是,如何在用户更改 text1 的值后动态更新 text2 和 text3。

另一个更基本的问题:如何在 viewdidload 的文本字段中显示文本字符串?
例如:我从数据库中检索了值,如何在加载视图时在文本字段中显示该值。

4

1 回答 1

1

好的,我将尝试一一解决问题:

首先在加载时显示文本字段。为标签创建一个出口来保存您的文本。示例 - 从 .h 文件开始

@property (weak, nonatomic) IBOutlet UILabel *textbox1;

现在在 Interface Builder 中,拖出一个标签,然后将您刚刚拖出的标签与您设置的属性连接起来。

现在您有了一个存储价值的渠道。

现在放一些东西去.m文件中-(void)viewDidLoad添加如下内容:

self.textbox1.text = @"some text to display";

那应该在屏幕上显示一些东西。

现在,如果您想在用户输入期间或之后动态更新其他屏幕上的标签,您需要实现一个文本字段委托。尝试解释整个事情有点复杂,但基本上在您的 .h 文件中,您的实现行应该如下所示:

@interface YourViewControllerNameHere : UIViewController <UITextFieldDelegate>

然后在您的 .m 文件中,您需要进行一些更改

首先在viewDidLoad添加这一行

self.textbox1.delegate = self;  //this tells the UILabel to send changes to your program

然后在一些开放空间中,您可以实现这些回调方法:然后运行您的程序,日志会告诉您事情发生的时间和地点。

基本上,您可以根据要执行的操作从正确的方法调用您的代码。

- (void)textDidChange:(id<UITextInput>)textInput {
  NSLog(@"text did change");
}

- (void)textFieldDidBeginEditing:(UITextField *)textField {
  NSLog(@"text field did begin editing");
}

-(void)textFieldDidEndEditing:(UITextField *)textField {
  NSLog(@"text field did end editing");
}

-(void)textWillChange:(id<UITextInput>)textInput {
  NSLog(@"text will change");
}

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
  NSLog(@"text field should change characters in range");
  //if this is disabled no character will appear
  //use to filter out bad characters
  return YES;
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
  NSLog(@"text field should return");
  return YES;
}
于 2012-08-06T21:32:04.523 回答