在UITable末尾添加空白单元格

时间:2010-04-29 13:13:34

标签: iphone uitableview

我正在尝试为自定义内容添加一个额外的单元格作为tableView中的最后一个单元格,而不会更改创建表格其他内容的字典。我认为添加它的位置在cellForRowAtIndexPath,而不是在numberOfRowsInSection添加一个,如果我这样做就会崩溃。

我从字典中获取cellCount,为表创建数据,然后在cellForRowAtIndexPath中,我有:

if (indexPath.row == cellCount) {
        ... stuff goes here
            return cell;
                        } 

当然,这永远不会被召唤。如果我if (indexPath.row == cellCount -1),它会用内容覆盖最后一个单元格。

如果我在xml中添加一个空白条目来填充字典,我可以使用它,但这很难看。

示例代码很简洁!

3 个答案:

答案 0 :(得分:1)

首先,您需要修改numberOfRowsInSection以返回+1。然后在cellForRowAtIndexPath中,您需要添加额外的空白单元格。

答案 1 :(得分:1)

这里的问题是tableviews旨在轻松准确地显示数据模型的内容,并且您已经决定不想这样做。你正在与API作斗争。

执行此操作的直接方法是检查numberOfRowsInSection,以便在要显示输入行时向行计数添加一个。然后在cellForRowAtIndexPath:中,您需要检查表视图是否要求输入行并返回适当类型的单元格。

从UI设计点,您可能需要考虑此设置是否最佳。这不是标准设置。用户是否会明白他们只能编辑表格的最后一行?他们会理解他们无法编辑其他行吗? UI中的任何内容都告诉他们这一切是如何工作的吗?用户每次想要添加数据时都必须滚动到表的末尾吗?这张桌子能长多久?如何在表格的最后一行显示键盘会影响表格滚动的方式?

我认为使用页脚视图显示文本字段是一种更好的设计,使其在视觉上与表格的其余部分不同。它在程序上也会更简单。您不必检查表是否每次要求单元格时都要求最后一行。

编辑:

在考虑它时,或许分段表会更简单。只需将特殊行放在它自己的部分(有或没有标题。)这将简化您对从字典中获取的行的处理,因为该部分中的行计数始终是字典的计数。同样,您可以检查索引路径的section属性,以了解要为哪一行返回的单元格。

答案 2 :(得分:1)

您需要在 {/ 1>} cellForRowAtIndexPathnumberOfRowsInSection中提供额外的单元格。

假设cellCount是数组中的实际单元格数,那么:(a)cellForRowAtIndexPath会在indexPath.row == cellCount时返回额外的自定义单元格,而(b)在{{1}中返回你需要numberOfRowsInSection

假设有一个部分,一个例子就是这样:

return cellCount+1