从1页保存数据并将该数据添加到tableView

时间:2011-07-14 18:43:23

标签: iphone objective-c uitableview

嘿伙计我有2个视图,第一个有UITableView。第二个具有textField,当用户按下第二页上的“保存”按钮时,我希望将textFields文本添加到tableView中。这是我正在使用的代码

- (IBAction)saveButton:(id)sender {
CheckListPracticeViewController * obj = [[CheckListPracticeViewController alloc]init];
[obj.cells insertObject:textField.text atIndex:0];
[self dismissModalViewControllerAnimated:YES];
NSLog(@"%@ "[cells objectAtIndex:0]);
[obj.myTableView reloadData];}

由于某种原因,数据没有被添加到表中查看是否有人知道什么是错的?此外,NSLog也不适用于此方法。非常感谢大家:D

4 个答案:

答案 0 :(得分:2)

这是因为您正在创建CheckListPracticeViewController的新实例并更新它而不是当前以模态方式呈现此视图控制器的实例。

将第一行更改为

CheckListPracticeViewController * obj = (CheckListPracticeViewController *)self.parentViewController;

修改

首先要与您的数据模型保持一致。如果您从plist加载一个字典数组,然后在该数组中添加字符串,那么您就会遇到严重的问题。我建议您创建一个包含名称和其他内容的字典对象,并将其添加到数组中。我会说[obj.cells insertObject:[NSDictionary dictionaryWithObject:textField.text forKey:@"name"] atIndex:0];而不是[obj.cells insertObject:textField.text atIndex:0];会解决当前的错误,但我怀疑这会解决您的问题。

答案 1 :(得分:0)

每次按下按钮,您都会分配/初始化新obj,尝试将新数据添加到实际容器中。

答案 2 :(得分:0)

您正在创建CheckListPracticeViewController的另一个实例。我假设你的桌子在哪里。如果您要返回CheckListPracticeViewController(我假设您在使用[self dismissModalViewControllerAnimated:YES]后执行此操作),则必须将视图控制器作为week reference传递或使用NSNotification或使用{ {1}}在NSUserDefaults

中存储和检索此对象

修改

CheckListPracticeViewController弱引用传递给具有CheckListPracticeViewController的视图。

示例:

UITextField类的.h中创建一个控制器引用。

UITextField

然后当您创建新的@property(nonatomi,assign)CheckListPracticeViewController *controller; 控制器类时,通过UITextField实例传递对其创建者的引用。

//在CheckListPracticeViewController.m文件中

controller

稍后使用控制器实例保存myEdiotr.controller = self;

中的文本
UITextField

答案 3 :(得分:0)

这绝对是其中之一。

  1. 检查是否已分配数组cells最有可能不是。这就是它没有被添加到tableView的原因。您可以将其添加到init方法,以便在添加到阵列之前初始化阵列。

  2. 在各个点尝试NSlogging数组的内容。这将让你知道它究竟发生了什么。 NS在Add-method的IBAction {@ 1}}中记录数组,viewWillAppear

  3. 在向其中添加数据之前,您需要确保数组为allocated

  4. NSLog将textField.text的内容添加到数组之前。我猜它不是属性,而且它只是null。

  5. 确保您在self.myTableView = tableView

  6. 末尾指定了cellForRowAtIndexPath