簡體   English   中英

從動態創建的UITextFields訪問文本值。 的iOS

[英]Access text values from dynamically created UITextFields. iOS

我正在基於NSArray的計數在視圖中創建UITextField

我想知道如何根據NSArray UITextField的標簽訪問文本值。

因此,在將以下UITextField添加到視圖之后,如何編寫代碼分別檢索myTextfield0,myTextfield1和myTextfield2的.text值?

例:

NSString *textFeildTextString = [NSString stringWithFormat:@"%@",myTextfield1.text];

實際代碼:

self.textFieldArray = [NSArray arrayWithObjects:@"one", @"two", @"three",nil];

NSMutableDictionary *myDict = [NSMutableDictionary dictionary];
for (int i=0; i<[self.textFieldArray count]; i++) {

    UIView *spacerView1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)];
    UITextField *myTextField = [[UITextField alloc]initWithFrame:CGRectMake(20, 60*i+150, 280, 45)];
    myTextField.borderStyle = UITextBorderStyleNone;
    myTextField.font = [UIFont systemFontOfSize:14];
    myTextField.returnKeyType = UIReturnKeyDefault;
    myTextField.placeholder = NSLocalizedString(@"Answer", nil);
    myTextField.inputAccessoryView = [super createInputToolbar];
    myTextField.background = [UIImage imageNamed:@"TextFieldBg"];
    myTextField.textColor = [UIColor appTextColorGrey];
    [myTextField setLeftView: spacerView1];
    myTextField.leftViewMode = UITextFieldViewModeAlways;
    myTextField.delegate = self;
    myTextField.tag = 200+i;
    [myDict setObject:myTextField forKey:[NSString stringWithFormat:@"myTextfield%d", i]];
    [self.view addSubview:myTextField];
}

NSLog(@"Dict: %@",myDict);

我的UITexfields的NSlog

2014-10-31 11:58:32.715 [51992:13536821] Dict: {
myTextfield0 = "<UITextField: 0x7faea14f8430; frame = (20 150; 280 45); text = ''; clipsToBounds = YES; opaque = NO; tag = 200; layer = <CALayer: 0x7faea14f82d0>>";
myTextfield1 = "<UITextField: 0x7faea14fae70; frame = (20 210; 280 45); text = ''; clipsToBounds = YES; opaque = NO; tag = 201; layer = <CALayer: 0x7faea14faca0>>";
myTextfield2 = "<UITextField: 0x7faea16dce30; frame = (20 270; 280 45); text = ''; clipsToBounds = YES; opaque = NO; tag = 202; layer = <CALayer: 0x7faea16d19c0>>";

}

for (int i=0; i<[self.textFieldArray count]; i++) {
    UITextField *txt  = (UITextField *)[myDict objectForKey:[NSString stringWithFormat:@"myTextfield%d", i]];
    NSLog(@"Text %@",txt.text);
}

您可以通過其標簽訪問它們:

UITextField *textField= (UITextField *)[self.view viewWithTag:200]; // Your first text field (201 your second etc..)
NSString *text = textField.text;

或直接通過字典訪問它們,因為您已經知道它們每個的密鑰:

UITextField *textField = (UITextField *)[myDict objectForKey:@"myTextField0"];

請注意,為了使字典能夠保留下來,在您的類中聲明一個強屬性成員並將其分配給創建的本地字典(否則它將被ARC丟失),因此在方法結束時,您將得到以下內容:

self.myDict = myDict;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM