我是 iPhone 开发的新手,我正在开发一个应用程序,如果我有带有自定义单元格的表格视图,我的自定义单元格包含标签和文本文件。这是我的注册屏幕,如何保存我的文本字段的数据以及如何对文本进行验证。在文本字段 endediting 中,我们可以保存数据。但是如果用户在第一个文件中输入姓名,然后单击完成按钮,它将显示请输入名字,因为我正在将数据保存在 didendediting 中。当用户在文本字段上时,我想保存数据。
我是 iPhone 开发的新手,我正在开发一个应用程序,如果我有带有自定义单元格的表格视图,我的自定义单元格包含标签和文本文件。这是我的注册屏幕,如何保存我的文本字段的数据以及如何对文本进行验证。在文本字段 endediting 中,我们可以保存数据。但是如果用户在第一个文件中输入姓名,然后单击完成按钮,它将显示请输入名字,因为我正在将数据保存在 didendediting 中。当用户在文本字段上时,我想保存数据。
您可以使用此方法来跟踪您当前的文本字段文本,并借助模型类对象来存储您的文本。
- (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSString *characterSet = nil;
switch (theTextField.tag)
{
case 1:
characterSet = @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ";
[sharedInstance.registrationDetails setFirstName:theTextField.text];
default:
characterSet = @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789?/!@#$&*.,-:; _";
break;
}
NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:characterSet];
for (int i = 0; i < [string length]; i++)
{
unichar c = [string characterAtIndex:i];
if (![myCharSet characterIsMember:c])
{
return NO;
}
}
return YES;
}
使控制器成为单元格文本字段的代表,然后在控制器中实现这些方法。
- (void)textFieldDidEndEditing:(UITextField *)textField
{
NSInteger tag = [textField tag];
if(tag == 0) {
//save first name text value
}
else if (tag == 1){
//save last name text value
}
else if etc....
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
只需确保在返回单元格时正确设置标签
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
您还可以对如何让键盘像表单处理程序一样使用下一个/上一个按钮进行一些研究
寄存器.h
@interface Register : NSObject {
NSString *_firstNameTxt;
NSString *_lastNameTxt;
NSString *_emailTxt;
NSString *_passwordTxt;
}
@property (nonatomic, retain) NSString * firstNameTxt;
@property (nonatomic, retain) NSString * lastNameTxt;
@property (nonatomic, retain) NSString * emailTxt;
@property (nonatomic, retain) NSString * passwordTxt;
@end
注册.m
@implementation Register
@synthesize firstNameTxt=_firstNameTxt;
@synthesize lastNameTxt =_lastNameTxt ;
@synthesize emailTxt=_emailTxt;
@synthesize passwordTxt= _passwordTxt;
- (void)dealloc{
[super dealloc];
[_firstNameTxt release];
[_lastNameTxt release];
[_emailTxt release];
[_passwordTxt release];
}
@end
注册视图控制器.h
@class Register;
@interface RegisterViewController : UIViewController {
Register *objRegister;
}
注册视图控制器.m
- (void)viewDidLoad {
[super viewDidLoad];
objRegister = [[Register alloc] init];
}
表视图代表
[txtFirstName setText:objRegister.firstNameTxt];
[txtLastName setText:objRegister.lastNameTxt];
-(void) textFieldDidEndEditing:(UITextField *)textField{
// do the same code as Warren Burton Post
}