我有一个自定义的可编辑UITableview
,我的问题是当我点击提交按钮时如何在NSDictionary
中存储它的价值。我的表就像一个简单的注册表。
答案 0 :(得分:1)
扩展我的评论:
如果我理解你,你想通过tableView和字典将UItableViewCell中的数据带回viewController。
执行此操作有两种主要方法,您可以为单元格创建委托或在单元格上创建块。因此,一旦textfilds完成编辑,请使用新数据调用delegate / block。然后让vc保存它
使用块:
MyTableViewCell.h
@interface MyTableViewCell : UITableViewCell
@property (nonatomic, copy) void (^nameChangedBlock)(NSString *name);
@end
MyTableViewCell.m
像textfield didFinishEditing:
- (void)textFieldDidFinishEditing:(UITextField *)textField {
if (textField == self.nameTextfield) {
self.nameChangedBlock(textField.text)
}
}
在具有TableView的ViewController中,在数据源方法cellforRow
中- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// Do your standard stuff create the cell and set data;
// dequeueReusableCellWithIdentifier: blah blah
cell.nameChangedBlock = ^{
// Alex j thank you
[yourNSMutableDictionary setObject:yourobject forKey:yourkey];
};
return cell
}
答案 1 :(得分:0)
假设您已引用文本字段,请执行以下操作:
[yourNSMutableDictionary setObject:yourobject forKey:yourkey];
编辑*如果您想从uitableview点击中获取信息,请查看此链接Use UITableViewCell as Button
答案 2 :(得分:0)
我建议将其存储在- (void)textFieldDidEndEditing:(UITextField *)textField
UITextField
的委托方法中,而不是存储SUBMIT按钮的所有信息。
如果您在UITextField
中显示清除按钮(十字图标),则当用户点击清除按钮时,您必须清除NSDictionary
中的特定行。为此,您还要添加- (BOOL)textFieldShouldClear:(UITextField *)textField
。
如果您正在使用UITextView
,那么还要包含适当的代理人。
背后的原因是,
您实时拥有用户信息,意味着您在表单,名字,姓氏,地址,DOB等领域中只有少数字段。当用户处于名字字段时,以及焦点时(点按即可更改)姓氏(或任何其他字段),textFieldDidEndEditing
将接听电话,您可以将名字保存到字典中。
同时,如果您显示一个清除按钮,当用户在名字字段中点按它时,textFieldShouldClear
将会拨打电话,第一个名字将立即从字典中删除。
如果您正在准备一份大型注册表(或任何其他表格)。例如,假设从用户那里获取20个值,如果您不使用此方法,则用户信息将保持在表单中可见。因为您可以随时从字典中获取并显示特定值。
实施例,
- (void)textFieldDidEndEditing:(UITextField *)textField {
NSString *getKey = [self keyForTag:textField.tag];
if(textField.text.length != 0) {
[dictionary setValue:textField.text forKey:getKey]; }
}
- (BOOL)textFieldShouldClear:(UITextField *)textField {
NSString *getKey = [self keyForTag:textField.tag];
if([dictionary valueForKey:getKey]) {
[dictionary removeValueForKey:getKey];}
}
- (NSString *)keyForTag:(NSInteger)tag {
if(tag == 1) {
return @"kFirstName";
}
else if(tag == 2) {
return @"kLastName";
}
...
}
- (NSString *)showValueForTag:(NSInteger)tag {
return [dictionary valueForKey:[self keyForTag:tag]];
}