Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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
Objective c Can';无法访问模态UITableViewController子类中UITextField对象的右文本_Objective C_Uitableview_Uitextfield - Fatal编程技术网

Objective c Can';无法访问模态UITableViewController子类中UITextField对象的右文本

Objective c Can';无法访问模态UITableViewController子类中UITextField对象的右文本,objective-c,uitableview,uitextfield,Objective C,Uitableview,Uitextfield,我有一个子类UITableViewController,用于为另一个表中的新单元格添加新数据。这意味着,我在顶部有一个“取消”和一个“保存”按钮,用于保存数据并返回到要将新对象添加到的表。我以模态方式显示添加控制器 我的问题是,我不知道如何从UITableViewController子类中tableView的用户输入单元格中获取数据,以便将它们保存在CoreData文件中 下面是我如何尝试的代码-但在控制台上,我只得到(nil)的人名: - (void)save { NSLog(@"Savin

我有一个子类UITableViewController,用于为另一个表中的新单元格添加新数据。这意味着,我在顶部有一个“取消”和一个“保存”按钮,用于保存数据并返回到要将新对象添加到的表。我以模态方式显示添加控制器

我的问题是,我不知道如何从UITableViewController子类中tableView的用户输入单元格中获取数据,以便将它们保存在CoreData文件中

下面是我如何尝试的代码-但在控制台上,我只得到(nil)的人名:

- (void)save
{

NSLog(@"Saving ...");
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];


UITableViewCell *cell = [self tableView:[self tableView] cellForRowAtIndexPath:indexPath];
NSString *personName = [[cell textField] text];

NSLog(@"New Person: %@", personName);

// Do saving with Core Data and updating here.

[self dismissModalViewControllerAnimated:YES];
}
我想您还需要以下方法来理解问题:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{
static NSString *CellIdentifier = @"Cell";

EditableDetailCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[EditableDetailCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

cell.accessoryType = UITableViewCellAccessoryNone;

if (indexPath.section == 0) {
    [cell.textField setPlaceholder:@"Name"];
} else {
    switch (indexPath.row) {
        case 0:
            [cell.textField setPlaceholder:@"Birth Year"];
            break;
        case 1: 
            [cell.textField setPlaceholder:@"Weight in kg"];
            break;
        case 2:
            [cell.textField setPlaceholder:@"Height in cm"];
            break;
        case 3:
            [cell.textField setPlaceholder:@"Sex"];
            break;
        default:
            break;
    }
}

return cell;
}

我真的找不到失败。在我看来,它应该是这样工作的。。。但事实并非如此。有人可以帮忙吗?

在设置单元格文本的方法中,您可以更改单元格的文本字段,但是您获取的用于记录/保存核心数据的字符串来自文本标签。这是故意的差异吗?

不要调用表视图数据源方法来获取单元格中的值。而是直接从表视图获取它

与此相反:

UITableViewCell *cell = [self tableView:[self tableView] cellForRowAtIndexPath:indexPath];
这样做:

UITableViewCell *cell = [[self tableView] cellForRowAtIndexPath:indexPath];

按您现在的方式进行操作实际上是重新创建单元格,因此会丢失您输入的值。datasource方法只意味着由表调用以确定要显示的内容

你是对的,我现在把它改成了textField,但还是不起作用!相同的结果…是否确实要调用
-tableView:cellforrowatinexpath:
而不是
-cellforrowatinexpath: