我的 UITableView 中有一个 customcell。此自定义单元格有一个标签和文本框。当用户填写数据(4-5 个字段)并单击“保存”按钮时。我想保存他输入的数据。
我怎样才能做到这一点??
我最多只有大约 5-6 个字段。如果您能举例说明我如何完成这项工作,那就太好了。
您是否尝试将数据传递回表格视图?如果是这样,您必须将信息保存在数据结构中,然后使用定义的协议传递它。
试试下面的代码:
- (UITableViewCell *)tableView: (UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
UITableViewCell *cell = [self.tabTeamDetails dequeueReusableCellWithIdentifier:@"customcellIdentifier"];
get UItextfeild and assign tag as below
textbox.tag = indexpath.row; //used to refer particular textfiled
}
在保存按钮操作中:
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
//for(i=0;i<noofrowsintableview;i++){
NSString *text = (NSString *)[self.view viewWithTag:i];
[dic addObject:[NSString stringWithFormat:text] forValue: i];
}
根据您的评论编辑:
在这种情况下,Apple 建议使用Delegate-Pattern
. 基本上,你要做的是:
@protocol FirstDataVCDelegate;
@interface FirstDataVC : UIViewController
@property (weak, nonatomic) id<FirstDataVCDelegate> delegate;
//...
@end
@protocol FirstDataVCDelegate <NSObject>
- (void)firstDataVC:(FirstDataVC *)dataVC didCollectData:(NSDictionary *)data;
@end
@interface RootVC: UIViewController<FirstDataVCDelegate>
//...
@end
@implementation RootVC
- (void)firstDataVC:(FirstDataVC *)dataVC didCollectData:(NSDictionary *)data
{
NSString *name = [data valueForKey:@"name"];
[self.completeData setValue:name forKey:@"name"];
}
@end
在这种情况下RootVC
,将是想要发送整个数据的 VC。FirstDataVC
是用户输入数据的 VC 之一。
每个获得用户输入的 VC 都必须提供一个协议,由其RootVC
实现。
这里有更多关于委托的内容。
一种方法:将数据保存在字典中。
单击保存按钮后,您可以制作他将填充的数据的数据结构。将这些值设置为数据结构也可以使用NSMutableDictionary
键值存储
示例:假设我们有 4 个UITextFeilds
textFeild1、textFeild2、textFeild3、textFeild14
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic addObject: textFeild1.text forValue: @"val1"];
[dic addObject: textFeild2.text forValue: @"val2"];
[dic addObject: textFeild3.text forValue: @"val3"];
[dic addObject: textFeild4.text forValue: @"val4"];
//Now you have the values and can retrieve them by:
NSString *value1 = [dic valueForKey:@"val1"];