将 table 单元格数据放入 UI 按钮操作?
Get table cell data into UI button action?
我想通过tableView
创建注册页面或登录页面。我创建了一个自定义动态单元格,并通过数组传递值,然后在 tableView
之外创建了按钮。我想在按钮操作中获取数据;例如,如果用户忘记填写一个字段,那么当按下按钮时,UIAlertView
应该显示消息以填写所有字段。我的问题是如何从自定义单元格的值 table 中获取数据到按钮中?
您可以创建自定义单元格,也可以通过标签管理 UITableviewCell。
在您的按钮点击事件中,一个一个地获取 Tableviewcells 并在单元格中验证文本框值。
识别单元格 您可以检查 class 单元格和该单元格的标签。
请记住,在 cellForRowAtIndexPath 中,您必须将标记值分配给单元格。
喜欢,
[cell setTag:indexPath.row];
为了便于理解,您还可以定义枚举
typedef NS_ENUM(NSInteger, UserLogin) {
UserLoginName = 0,
UserLoginEmailId = 1,
UserLoginPassword = 2, };
编辑:
#define TEXTFIELD_TAG 501
还在 cellForRowAtIndexPath 中为 UITextField 设置标签
[cell.textField setTag:TEXTFIELD_TAG];
通过单元格从文本字段循环获取文本值。
NSString *strUserName, *strEmailId, *strPassword;
// Loop upto total cells in tableview or counts of your datasource. depends on your implementation.
for (int i = 0; i < [tableView numberOfRowsInSection:0]; i++) {
NSIndexPath *iPath = [NSIndexPath indexPathForRow:i inSection:0];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:iPath];
UserLogin loginState = cell.tag;
switch (loginState) {
case UserLoginName: {
UITextField *textField = (UITextField *)[cell viewWithTag:TEXTFIELD_TAG];
strUserName = [textField text];
break;
}
case UserLoginEmailId: {
UITextField *textField = (UITextField *)[cell viewWithTag:TEXTFIELD_TAG];
strEmailId = [textField text];
break;
}
case UserLoginPassword: {
UITextField *textField = (UITextField *)[cell viewWithTag:TEXTFIELD_TAG];
strPassword = [textField text];
break;
}
default: {
break;
}
}
}
// 处理用于验证的字符串值
有很多方法可以做到这一点。您可以选择最适合您的要求。
在移动开发中你应该严格遵循MVC。创建 User 的模型 class 并设置其 属性 如用户名、密码。由于这些都将通过文本字段设置,因此您可以在 textFieldDidEndEditing 中填充用户对象。从您的用户对象中,您可以像那样将用户属性的文本添加到任何按钮。
` // 用户 class
@interface 用户:NSObject
@property (nonatomic,retain) NSString * user_fname;
@property (nonatomic,retain) NSString * user_lname;
@property (nonatomic,retain) NSString * user_email;
@property (nonatomic,retain) NSString * user_phone;
@property (nonatomic,retain) NSString * user_state;
@property (nonatomic,retain) NSString * user_city;
@property (nonatomic,retain) NSString * user_username;
@end
//Than create an object of user in your model class for sign-up or sign-in
User *user = [[User alloc] init]; // object created
// textfield delegate method
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
if (textField == usernameTF) {
user.user_username = textField.text;
}
else if (textField == passwordTF) {
user.user_password = textField.text;
}
return YES;
}
`
您的用户对象中有数据,您可以在需要的地方使用它的属性(需要数据)。
我想通过tableView
创建注册页面或登录页面。我创建了一个自定义动态单元格,并通过数组传递值,然后在 tableView
之外创建了按钮。我想在按钮操作中获取数据;例如,如果用户忘记填写一个字段,那么当按下按钮时,UIAlertView
应该显示消息以填写所有字段。我的问题是如何从自定义单元格的值 table 中获取数据到按钮中?
您可以创建自定义单元格,也可以通过标签管理 UITableviewCell。
在您的按钮点击事件中,一个一个地获取 Tableviewcells 并在单元格中验证文本框值。
识别单元格 您可以检查 class 单元格和该单元格的标签。
请记住,在 cellForRowAtIndexPath 中,您必须将标记值分配给单元格。
喜欢,
[cell setTag:indexPath.row];
为了便于理解,您还可以定义枚举
typedef NS_ENUM(NSInteger, UserLogin) {
UserLoginName = 0,
UserLoginEmailId = 1,
UserLoginPassword = 2, };
编辑:
#define TEXTFIELD_TAG 501
还在 cellForRowAtIndexPath 中为 UITextField 设置标签
[cell.textField setTag:TEXTFIELD_TAG];
通过单元格从文本字段循环获取文本值。
NSString *strUserName, *strEmailId, *strPassword;
// Loop upto total cells in tableview or counts of your datasource. depends on your implementation.
for (int i = 0; i < [tableView numberOfRowsInSection:0]; i++) {
NSIndexPath *iPath = [NSIndexPath indexPathForRow:i inSection:0];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:iPath];
UserLogin loginState = cell.tag;
switch (loginState) {
case UserLoginName: {
UITextField *textField = (UITextField *)[cell viewWithTag:TEXTFIELD_TAG];
strUserName = [textField text];
break;
}
case UserLoginEmailId: {
UITextField *textField = (UITextField *)[cell viewWithTag:TEXTFIELD_TAG];
strEmailId = [textField text];
break;
}
case UserLoginPassword: {
UITextField *textField = (UITextField *)[cell viewWithTag:TEXTFIELD_TAG];
strPassword = [textField text];
break;
}
default: {
break;
}
}
}
// 处理用于验证的字符串值
有很多方法可以做到这一点。您可以选择最适合您的要求。
在移动开发中你应该严格遵循MVC。创建 User 的模型 class 并设置其 属性 如用户名、密码。由于这些都将通过文本字段设置,因此您可以在 textFieldDidEndEditing 中填充用户对象。从您的用户对象中,您可以像那样将用户属性的文本添加到任何按钮。 ` // 用户 class @interface 用户:NSObject
@property (nonatomic,retain) NSString * user_fname;
@property (nonatomic,retain) NSString * user_lname;
@property (nonatomic,retain) NSString * user_email;
@property (nonatomic,retain) NSString * user_phone;
@property (nonatomic,retain) NSString * user_state;
@property (nonatomic,retain) NSString * user_city;
@property (nonatomic,retain) NSString * user_username;
@end
//Than create an object of user in your model class for sign-up or sign-in
User *user = [[User alloc] init]; // object created
// textfield delegate method
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
if (textField == usernameTF) {
user.user_username = textField.text;
}
else if (textField == passwordTF) {
user.user_password = textField.text;
}
return YES;
}
`
您的用户对象中有数据,您可以在需要的地方使用它的属性(需要数据)。