嘿伙计我有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
答案 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)
这绝对是其中之一。
检查是否已分配数组cells
。 最有可能不是。这就是它没有被添加到tableView的原因。您可以将其添加到init
方法,以便在添加到阵列之前初始化阵列。
在各个点尝试NSlogging
数组的内容。这将让你知道它究竟发生了什么。 NS在Add-method的IBAction
{@ 1}}中记录数组,viewWillAppear
在向其中添加数据之前,您需要确保数组为allocated
。
NSLog将textField.text
的内容添加到数组之前。我猜它不是属性,而且它只是null。
确保您在self.myTableView = tableView
cellForRowAtIndexPath
醇>