Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 保存1页中的数据并将该数据添加到tableView_Iphone_Objective C_Uitableview - Fatal编程技术网

Iphone 保存1页中的数据并将该数据添加到tableView

Iphone 保存1页中的数据并将该数据添加到tableView,iphone,objective-c,uitableview,Iphone,Objective C,Uitableview,嘿,伙计们,我有两个视图,第一个是UITableView。第二个有一个textField,当用户在第二个页面上按下Save按钮时,我希望将textFields文本添加到tableView中。这是我正在使用的代码 - (IBAction)saveButton:(id)sender { CheckListPracticeViewController * obj = [[CheckListPracticeViewController alloc]init]; [obj.cells insertObje

嘿,伙计们,我有两个视图,第一个是UITableView。第二个有一个textField,当用户在第二个页面上按下Save按钮时,我希望将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

每次按下按钮时,您都可以分配/初始化一个新对象,尝试将新数据添加到实际容器中。

您正在创建另一个CheckListPracticeViewController实例。我想那就是你的桌子。如果您要返回CheckListPracticeViewController,我假设您是这样做的,因为您使用[self DismissModalViewController激活:是],您必须将视图控制器作为周引用传递,或者使用NSNotification或使用NSUserDefaults在CheckListPracticeViewController中存储和检索此对象

编辑

通过弱引用将CheckListPracticeViewController传递给具有UITextField的视图

例如:

在UITextField类的.h中创建控制器引用

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

//在CheckListPracticeViewController.m文件中

myEdiotr.controller = self;
稍后使用控制器实例保存UITextField中的文本


这绝对是其中之一

检查是否已分配阵列单元。很可能不是。这就是为什么它没有被添加到tableView中。可以将其添加到init方法,以便在添加到数组之前初始化数组

尝试在不同点记录数组的内容。这会让你知道到底发生了什么。NSLog添加方法的iAction中的数组,视图将出现

在向阵列添加数据之前,需要确保已分配阵列

在将textField.text添加到数组之前,先记录其内容。我猜它不是一个属性,它只是空的

确保已在cellForRowAtIndexPath的末尾指定self.myTableView=tableView


这是因为您正在创建CheckListPracticeViewController的新实例并对其进行更新,而不是以模式显示此视图控制器的当前实例

将第一行更改为

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


首先,要与您的数据模型保持一致。如果您正在从plist加载一个字典数组,然后将字符串添加到该数组中,则会出现严重问题。我建议您使用名称和其他内容创建一个dictionary对象,并将其添加到数组中。我会说执行[obj.cells insertObject:[NSDictionary dictionary withobject:textField.text forKey:@name]atIndex:0];而不是[obj.cells insertObject:textField.text atIndex:0];将修复此当前错误,但我怀疑这将修复您的问题。

hmm好的,我刚刚尝试过,但没有发生任何变化:有其他建议吗??谢谢,你每次都要重新连接集装箱。因为它是一个新实例,所以实际上您没有将数据添加到容器中,该容器是单元格和表视图的实际容器。那么,我应该尝试在那里添加它吗?不,将数据添加到表视图数据源正在拾取值的容器中。好的,我想我知道你的意思。。。你说我的选取值是什么意思?好吧,我应该将textfield的文本存储在NSUSerDefaults中,然后检索它并将其存储在填充我的表的数组中??你可以或者你可以按周传递控制器引用。这是最好的解决办法。示例发布在答案中。@kurt它必须起作用,可能是您做错了什么,请将代码粘贴到创建具有UITextfield的视图的位置。等等,创建视图吗?什么意思?我很抱歉,我是个笨蛋haha@paste显示UITextFiewld视图容器的代码,如果您使用UIViewController还是纯uiviewum,我非常确定数组已分配,我编写了单元格[[NSMutableArray alloc]initWithContentsOfFile:myFile];我的文件是一个NSString,它的编写方式如下:NSString*myFile=[[NSBundle mainBundle]pathForResource:fundsoftype:plist];可以它在哪里分配?您是否正在该方法中添加模态视图控制器?您是在分配阵列之前还是之后添加模态视图控制器?我不知道添加mvc是什么意思?嗯。您应该使用presentModalViewController:someViewController。因为您已经在上面的代码中发布了dismissModalViewControllerAnimated。我在问这个问题。好的,谢谢你的帮助,但是这个代码不起作用?你知道我还做错了什么吗??谢谢:您的NSLog语句记录了什么?如果它应该是NSLog@%@[obj.cells objectAtIndex:0];并删除末尾的重载数据调用,并将其添加到CheckListPracticeViewController的v中
iewWillAppear:method.OK,我按照你的建议做了,结果仍然一样,我在这行代码中得到一条SIGABRT消息:cell.textlab.text=[[cells objectAtIndex:indexPath.row]valueForKey:@name];我不知道您是否知道,但是我的tableView由一个plist填充,我将plist的信息存储到单元格可变数组中,它应该是cell.textlab.text=[cells objectAtIndex:indexPath.row];当您在上面的代码中添加一个字符串,即textField.text时。
CheckListPracticeViewController * obj = (CheckListPracticeViewController *)self.parentViewController;