-1

我有一个关于设计约定的问题。请参阅我的这个表格视图充满了可编辑的信息。可编辑,如更改单元格右侧细节中的文本,而不是删除或移动单元格。我想知道如何设计/建模这个,我所知道的唯一具有此功能的 Apple 产品是联系人应用程序。解决方案是创建很多很多组,但这根本不适合我的问题,部分原因是我已经有了组。最简单的方法就是让正确的细节成为一个文本字段并在编辑模式下启用它,但这当然是一个愚蠢的解决方案,因为没有给出视觉反馈..

关于如何设计/建模的任何想法,或者Apple希望如何拥有它?

编辑:

为了更清楚我的意思,这是一个解释我所说的截图。再一次,我的问题是如何在表格单元格处于编辑模式时显示它们。所有值都是可变的,它们都没有任何类型的预设可供选择,它们都是基于用户编写的文本。该应用程序的这一部分基本上是一个 CRM 系统,您可以在其中编辑有关您自己的所有信息。

例子

4

1 回答 1

0

您正在尝试做的是非常标准的Dynamic Prototype单元格(与Static Cells您可能用来制作该屏幕截图的方法相反)。您最好的选择可能是观看其中的一些教程

为了快速总结一下,您将要在Value屏幕截图部分显示的所有字符串放入NSArray. 有一些方法可以自动处理将数组UITableViewDelegateUITableViewDataSource的第 i 个项目放入第 i 个单元格(因此数组中的第 3 个项目将进入第 3 个单元格等)。为了允许用户编辑内容,您将想要制作一个全新的第二个屏幕(这就是您UITextfields将要在的地方)。当用户从第二个屏幕返回到您的表格屏幕时,您将数组中的项目替换为用户在 中输入的任何内容UITextfield,然后告诉UITableViewDelegate方法用新的 s 重新加载表格Value

我链接到的大多数教程可能都没有关于拥有多个组的内容,所以我会在这里添加一些内容(如果你先看教程,下面的内容可能才有意义,所以我建议跟随教程,然后回到这里并进行我即将建议的更改)。NSIndexPath发送到该方法的tableView:cellForRowAtIndexPath包含有关单元格row和的信息section。每个“组”都是它自己的section(我真的不确定为什么 Apple 决定为同一事物使用两个不同的名称,但事实就是如此)。执行此操作的最简单方法是为每个部分设置不同的数组(因此您将拥有用于NSMutableArray *firstSectionArray = [[NSMutableArray alloc] init];NSMutableArray *secondSectionArray = [[NSMutableArray alloc] init];等的行)。然后,在你tableView:cellForRowAtIndexPath方法的最顶端,你放了一些if中的语句以查看section您正在“构建”的表,并相应地使用正确数组中的值。就像是:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == 0)
    {
         // bunch of stuff from the tutorials here to create "cell"

         [cell.detailTextLabel.text = firstSectionArray objectAtIndex:indexPath.row];

         // bunch more stuff
    }
    else if (indexPath.section == 1)
    {
         // bunch of stuff from the tutorials here to create "cell"

         [cell.detailTextLabel.text = secondSectionArray objectAtIndex:indexPath.row];

         // bunch more stuff
    }
    // else if (keep going for however many sections you have)

    return cell;
}
于 2013-05-11T13:05:42.027 回答