我正在尝试为自定义内容添加一个额外的单元格作为tableView中的最后一个单元格,而不会更改创建表格其他内容的字典。我认为添加它的位置在cellForRowAtIndexPath
,而不是在numberOfRowsInSection
添加一个,如果我这样做就会崩溃。
我从字典中获取cellCount
,为表创建数据,然后在cellForRowAtIndexPath
中,我有:
if (indexPath.row == cellCount) {
... stuff goes here
return cell;
}
当然,这永远不会被召唤。如果我if (indexPath.row == cellCount -1)
,它会用内容覆盖最后一个单元格。
如果我在xml中添加一个空白条目来填充字典,我可以使用它,但这很难看。
示例代码很简洁!
答案 0 :(得分:1)
首先,您需要修改numberOfRowsInSection
以返回+1。然后在cellForRowAtIndexPath
中,您需要添加额外的空白单元格。
答案 1 :(得分:1)
这里的问题是tableviews旨在轻松准确地显示数据模型的内容,并且您已经决定不想这样做。你正在与API作斗争。
执行此操作的直接方法是检查numberOfRowsInSection
,以便在要显示输入行时向行计数添加一个。然后在cellForRowAtIndexPath:
中,您需要检查表视图是否要求输入行并返回适当类型的单元格。
从UI设计点,您可能需要考虑此设置是否最佳。这不是标准设置。用户是否会明白他们只能编辑表格的最后一行?他们会理解他们无法编辑其他行吗? UI中的任何内容都告诉他们这一切是如何工作的吗?用户每次想要添加数据时都必须滚动到表的末尾吗?这张桌子能长多久?如何在表格的最后一行显示键盘会影响表格滚动的方式?
我认为使用页脚视图显示文本字段是一种更好的设计,使其在视觉上与表格的其余部分不同。它在程序上也会更简单。您不必检查表是否每次要求单元格时都要求最后一行。
编辑:
在考虑它时,或许分段表会更简单。只需将特殊行放在它自己的部分(有或没有标题。)这将简化您对从字典中获取的行的处理,因为该部分中的行计数始终是字典的计数。同样,您可以检查索引路径的section属性,以了解要为哪一行返回的单元格。
答案 2 :(得分:1)
您需要在 {/ 1>} cellForRowAtIndexPath
和numberOfRowsInSection
中提供额外的单元格。
假设cellCount
是数组中的实际单元格数,那么:(a)cellForRowAtIndexPath
会在indexPath.row == cellCount
时返回额外的自定义单元格,而(b)在{{1}中返回你需要numberOfRowsInSection
。
假设有一个部分,一个例子就是这样:
return cellCount+1