1

我制作了一个带有添加单元格的按钮的表格视图。我是目标 C 领域的新手,所以我有一些问题。我也有它,因此可以点击单元格并打开 detailViewController。detailViewController 中有一个选择器。如何将选择器选择设置为 tableViewCell 的标题?它们将超过 1 个表格视图单元格,根据选择器的选择必须有不同的标题,所以我需要为每个单元格制作不同的视图吗?对不起,如果这些问题很愚蠢,我对这个领域真的很陌生。


编辑

我一直在做功课并想出了一些代码,但我仍然遇到错误。我有两个视图,一个是 tableViewController,一个是带有选择器的视图。我已经声明了单元格并将其标识符设置为单元格。然后我将 .h 文件从我的 tableViewController 导入到我的 pickerViewController。但是当我设置标题时,我得到一个错误。设置我的标题的代码是

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    int select = row;
    if (select == 0) {
        cell.textLabel.text = @"Title";
    } else

但我收到错误“使用未声明的标识符单元格”。

在 tableViewController 的 .h 文件中有UITableViewCell *cell;这个

.m 文件有这个

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

    NSDate *object = _objects[indexPath.row];
    cell.textLabel.text = [object description];
    return cell;
}

同样在 pickerViewController 的 .m 文件中,我有这个 `#import "TableViewController.h"

难道我做错了什么?我应该得到这个错误吗?对不起,如果这很难理解,因为我很难把我的问题变成文字。

4

2 回答 2

1

你的方法不正确。您基本上需要以下步骤。

1)用于填充表格视图的数组或字典需要具有“标题”的属性(或键,如果它是字典)。您将使用它来设置每个单元格中的标题。它最初可以是一个空字符串,如果您在用户从选择器中选择某些内容之前不设置任何标题

2)当您打开详细视图控制器时,您应该在属性中保留对选定行的引用(在表视图控制器中)。如果您在代码中进行转换,这将在 tableView:didSelectRowAtIndexPath: 中,如果您使用 segue,则应在 prepareForSegue: 中完成。控制器还应该在这两种方法之一中将自己设置为细节控制器的委托。

3)细节控制器应该有一个委托协议,其中一种方法将标题传递回表视图控制器。用户在选取器中进行选择后,调用委托方法。表格视图控制器将实现此方法并使用存储在其属性中的行信息将该标题字符串添加到数组中,然后更新表格视图。

于 2013-08-11T04:22:05.483 回答
0

当您的单元格被点击时,您正在使用

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

显示您的 UIPickerView 的方法,对吗?每当调用您的 pickerViewDidSelectRow 函数时,您都需要访问此选定的行/单元格,以更改单元格的标题。有很多方法可以做到这一点。

最接近您尝试实现的方式的方式是在 tableViewDidSelectRowAtIndexPath 方法中保存指向所选单元格的指针:

self.selectedCell = [tableView:tableView cellForRowAtIndexPath:indexPath];

为此,您需要将 .h 文件中的“单元格”名称更改为“selectedCell”。我建议这种变化,因为“细胞”可能会令人困惑。

然后,在您的 pickerViewDidSelectRowInComponent 中,您将设置所选单元格的标题,如下所示:

self.selectedCell.textLabel.text = @"Title";
于 2013-08-11T02:56:30.087 回答