Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 单击按钮时如何获取UITextField值_Iphone_Ios_Uitableview_Uitextfield - Fatal编程技术网

Iphone 单击按钮时如何获取UITextField值

Iphone 单击按钮时如何获取UITextField值,iphone,ios,uitableview,uitextfield,Iphone,Ios,Uitableview,Uitextfield,我有这样的看法: 这些实现: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [self.tableLogin dequeueReusableCellWithIdentifier:C

我有这样的看法:

这些实现:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [self.tableLogin dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                       reuseIdentifier:CellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryNone;
        cell.selectionStyle = UITableViewCellSelectionStyleNone;

        if ([indexPath section] == 0) {
            UITextField *textfield = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, 165, 30)];
            textfield.adjustsFontSizeToFitWidth = YES;
            textfield.textColor = [UIColor blackColor];
            textfield.backgroundColor = [UIColor whiteColor];
            textfield.autocorrectionType = UITextAutocorrectionTypeNo;
            textfield.autocapitalizationType = UITextAutocapitalizationTypeNone;
            textfield.textAlignment = UITextAlignmentLeft;
            textfield.clearButtonMode = UITextFieldViewModeNever;
            textfield.delegate = self;

            if ([indexPath row] == 0) {
                textfield.tag = 0;
                textfield.placeholder = @"your username";
                textfield.keyboardType = UIKeyboardTypeDefault;
                textfield.returnKeyType = UIReturnKeyNext;
            }
            else {
                textfield.tag = 1;
                textfield.placeholder = @"required";
                textfield.keyboardType = UIKeyboardTypeDefault;
                textfield.returnKeyType = UIReturnKeyDone;
                textfield.secureTextEntry = YES;
            }

            [textfield setEnabled:YES];
            [cell addSubview:textfield];
            [textfield release];
        }
    }
    if ([indexPath section] == 0) {
        if ([indexPath row] == 0) {
            cell.textLabel.text = @"Email";
        }
        else {
            cell.textLabel.text = @"Password";
        }
    }

    return cell;    
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    switch (textField.tag) {
        case 0:
            self.username = textField.text;
            break;
        case 1:
            self.password = textField.text;
            break;
    }
    return true;
}
当用户单击登录按钮而不点击“完成”关闭键盘时,不会保存字段值。如何解决这个问题?

除了按返回键外,您还可以使用
-(void)textfielddendediting:(UITextField*)textField
并将值保存在那里。

您可以使用
-(void)textfielddendediting:(UITextField*)textField
并将值保存在那里,除了按回车键。

还有两个选项:

保留对两个文本字段的引用,并在“完成”按钮的操作方法中提取它们的
text

或者,注册
UITextFieldTextDidChangeNotification
并在输入发生时捕获输入。

两个选项:

保留对两个文本字段的引用,并在“完成”按钮的操作方法中提取它们的
text


或者,注册
UITextFieldTextDidChangeNotification
,并在输入发生时捕获输入。

什么是
UITextFieldTextDidChangeNotification
?我找不到它的任何内容。它是为UITextField定义的通知名称。您可以这样注册它:
[[NSNotificationCenter defaultCenter]addObserver:self-selector:@selector(textfielddichange:)name:uitextfieldticchange通知对象:textField]文档非常稀疏。此PDF的第22页列出了类支持的所有通知:通过
[textfield addTarget:self action:@selector(textfield didchange:)for controlEvents:UIControlEventEditingChanged]更改的内容?哪一个更好?哦,有趣,我想那也行。不知道,两种都试试,看哪一种对你更整洁。只要你得到了你想要的数据,这两种方法都是合理的。什么是
UITextFieldTextDidChangeNotification
?我找不到它的任何内容。它是为UITextField定义的通知名称。您可以这样注册它:
[[NSNotificationCenter defaultCenter]addObserver:self-selector:@selector(textfielddichange:)name:uitextfieldticchange通知对象:textField]文档非常稀疏。此PDF的第22页列出了类支持的所有通知:通过
[textfield addTarget:self action:@selector(textfield didchange:)for controlEvents:UIControlEventEditingChanged]更改的内容?哪一个更好?哦,有趣,我想那也行。不知道,两种都试试,看哪一种对你更整洁。只要你得到你想要的数据,这两种方法都是合理的。我改变了我的做法,用iAction代替void-(iAction)textfieldDendediting:(UITextField*)textField和我将“编辑已更改”事件引用到此操作。工作很有魅力。我改变了主意,用IBAction代替void-(iAction)textfieldDendediting:(UITextField*)textField和我将“编辑已更改”事件引用到此操作。工作得很有魅力。