【问题标题】:How to save CustomCell data in an Array?如何将 CustomCell 数据保存在数组中?
【发布时间】:2013-03-07 17:16:32
【问题描述】:

我的 UITableView 中有一个 customcell。此自定义单元格有一个标签和文本框。当用户填写数据(4-5 个字段)并单击“保存”按钮时。我想保存他输入的数据。

我该怎么做??

我最多只有大约 5-6 个字段。如果您能举例说明我如何完成这项工作,那就太好了。

【问题讨论】:

  • 嗯,有几个选项取决于您的具体情况。您想保护多少数据?只是几个字符串还是很多数据?请编辑您的问题以更具体

标签: ios xcode


【解决方案1】:

一种方法:将数据保存在字典中。

【讨论】:

    【解决方案2】:

    您是否尝试将数据传递回 tableview?如果是这样,您必须将信息保存在数据结构中,然后使用定义的协议传递它。

    【讨论】:

    • 我在导航控制器中有 4-5 个视图控制器......所以用户可能会来回走动。每个 VC 有大约 5 个输入字段。我想将用户输入的数据保存在某个数组中,一旦他完成填充所有数据,然后将其提交到服务器
    • 我认为托比回答了你的问题
    【解决方案3】:

    根据你的 cmets 进行编辑:

    在这种情况下,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 实现的协议。

    Here 更多关于委托。

    【讨论】:

    • 谢谢托比。但在这里我使用 Customcell 并自动构建表格行。
    • 对不起,我不明白你的问题。您想将用户输入的数据永久保存到设备中,还是只想“收集”变量中的数据?
    • 对不起...我还没有完成并按下回车...我没有字段名称。它是一个自动生成的表。使用自定义单元
    • 我想将数据收集到一个变量中,比如数组。我有 4-5 个视图控制器,用户在其中输入数据。一旦他完成了所有我需要将所有数据发送到服务器。
    • 啊,好吧,那么您在导航控制器中呈现这些视图控制器并且用户在每个 vc 中输入部分数据?
    【解决方案4】:

    点击保存按钮后,您可以制作他将填充的数据的数据结构。将这些值设置为数据结构 也可以使用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"];
    

    【讨论】:

    • Hossam - 请给我发一段代码,告诉我它是如何完成的。我是 ios 编程的新手。这将是一个很大的帮助
    【解决方案5】:

    试试下面的代码:

    - (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];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 1970-01-01
      • 2022-10-13
      相关资源
      最近更新 更多