将表格单元格数据获取到 UI 按钮操作中?
Posted
技术标签:
【中文标题】将表格单元格数据获取到 UI 按钮操作中?【英文标题】:Get table cell data into UI button action? 【发布时间】:2015-05-20 09:00:01 【问题描述】:我想通过tableView
创建注册页面或登录页面。我创建了一个自定义动态单元格,并通过数组传递了值,然后在tableView
之外创建了按钮。我想在按钮操作中获取数据;例如,如果用户忘记填写一个字段,那么当按下按钮时,UIAlertView
应该显示消息以填写所有字段。我的问题是如何从自定义单元格的值表中获取数据到 Button 中?
【问题讨论】:
你是否使用过 Model 来存储数据并在 web 服务或数据库中发送数据...? 这是一个非常模糊的问题。您具体面临哪些问题?您应该有一个负责表格和按钮的控制器对象。这个控制器应该检查和标记警报。 @TheMall:对不起没有使用模型 【参考方案1】:您可以创建自定义单元格,也可以通过标签管理 UITableviewCell。
在您的按钮点击事件中,逐个获取 Tableviewcells 并使用 in 单元格验证文本框值。 识别单元格 您可以检查单元格的类别和该单元格的标签。 请记住,在 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;
// 验证字符串值
有很多方法可以做到这一点。您可以选择最适合您的要求。
【讨论】:
【参考方案2】:在移动开发中,您应该严格遵循 MVC。创建 User 的模型类并设置其属性,如用户名、密码。由于这些都将通过文本字段设置,因此您可以在 textFieldDidEndEditing 中填充您的用户对象。从您的用户对象中,您可以像这样将用户属性的文本添加到任何按钮。 ` // 用户类 @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;
`
你的用户对象中有数据,你可以在你想要的地方使用它的属性(需要数据)。
【讨论】:
以上是关于将表格单元格数据获取到 UI 按钮操作中?的主要内容,如果未能解决你的问题,请参考以下文章
从自定义单元格 iPhone 中的 textField 获取值