UITableView - 通过点击现有单元格插入新行
Posted
技术标签:
【中文标题】UITableView - 通过点击现有单元格插入新行【英文标题】:UITableView - insert new row by tapping on existing cell 【发布时间】:2014-07-31 12:29:49 【问题描述】:我将UITableView
与原型单元格一起使用,并希望最上面的单元格成为“加法器”单元格:当用户点击该单元格时,将执行转场。由于UITableView
是动态生成的(顶部除外)并且单元格正在被重用,我有两个问题:
1 - 是否可以制作一个static
单元,而所有其他单元仍将保留原型单元?
2 - 如果没有,如何实施此解决方案?我认为,它必须在
中实现- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
但我不知道,这种方法是否合适。我是否正确,要实现这个自定义单元格,我需要检查是否indexPath.row = 0
并用自定义替换所需的单元格,同时以编程方式将所有单元格向下移动一行?
【问题讨论】:
【参考方案1】:Yiu 可以在你的单元格的 Tap 上做,你可以创建两个不同的单元格,一个是你的原型单元格,一个是你的详细信息
在你的
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
if (indexPath.row == 0)
AdderCell *cell = (AdderCell*)[tableView dequeueReusableCellWithIdentifier:@"AdderCell" forIndexPath:indexPath];
else
CustomCell *cell = (CustomCell*)[tableView dequeueReusableCellWithIdentifier:@"CustomCell" forIndexPath:indexPath];
在
中点击您的 Adder 单元格- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
if (indexPath.row == 0)
// add data to your row array and reload the tableRow
else
// do your tap action
【讨论】:
感谢您的解释。几位cmets:首先,你有点误会我了。自定义单元格只会使用参数执行 segue,因此无需重新加载任何内容。其次,我有一个关于- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
的问题——所有的TableView 都附加到CoreData 和FetchedResultsController。 FRC 给出的索引路径为 0 - CDObject0, 1 - CDObj1... 但是如果 CD 中没有对象,它不会调用方法 tableViewcellForRowAtIndexPath。我需要在 viewDidLoad 上手动调用它吗?
我是否需要重写一些方法来制作 indexPath: 0 - custom, 1- CDObj0, 2 - CDObj1?
如果您使用的是 FetchedResultsController,那么如果您已经实现了它的委托,它将自动重新加载表!
是的,但是 CoreData 转移怎么样?我需要这样做吗,还是会自动完成?
是的,在某种程度上!在这里查看更多***.com/questions/9322885/…以上是关于UITableView - 通过点击现有单元格插入新行的主要内容,如果未能解决你的问题,请参考以下文章
如何使用文本字段 UITableView 从自定义单元格中获取值?
UITableView:可以通过点击手势检测单元格选择,但不能检测 didSelectRowAtIndexPath
如何管理 UITableView + 动态自定义单元格(UIBUtton + UITextField + UIBUtton)插入?