动态添加新的tableview单元格

时间:2012-04-10 12:15:03

标签: objective-c ios cocoa-touch ipad uitableview

我见过很多关于在tableview中添加和删除单元格的帖子。我想要的是当用户点击单元格中的添加按钮时,它必须询问用户在该单元格中输入文本的内容,然后用户在单元格中输入文本,然后将其添加到tableview中。谁能告诉我怎么做到这一点?

3 个答案:

答案 0 :(得分:1)

我会将添加按钮放在页脚或标题中,而不是放在单元格中,我个人认为管理添加单元格会更容易。

除此之外,不确切地知道你的问题是什么,如果你把你的控制器作为可用的委托,那么你可以通过访问所有相关的方法,特别是那个方法,轻松地添加或删除单元格:

- (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleInsert) {
       // ......
    }
}

由以下人员调用:

[yourTableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath ] withRowAnimation:UITableViewRowAnimationAutomatic];

答案 1 :(得分:0)

拥有像(UITableViewCell *) createNewCellForTableView这样的方法。这将创建并返回UITableViewCell。

CellForRowAtIndexPath中使用此方法为tableView创建所有单元格。这需要以这种方式完成,因为当您执行[tableView reloadData];时,每次添加新单元格时都需要创建新单元格。

最后,在创建新单元格后,在ADD按钮的IBAction中,确保重新加载tableView。

〜一个更简单的选择:

由于您只是在寻找用户添加文本,因此您可以在uitableViewcell中嵌入textField。用户完成输入后,您可以将文本添加到dataSource(填充tableView的数组)并重新加载tableView。确保您拥有所需的textField enableddisabled

答案 2 :(得分:0)

这就是我这样做的方式并且有效:

首先,按如下方式创建一个实例变量:

int numRows = 0;

按如下方式实施方法numberOfRowsInSection

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return numRows;
}

现在在我的应用程序中,在一个地方,我正在使用REST API并获取JSON,我将numRows的值更新为numRows = [jsondata count];

如果您拥有动态内容,请按照您希望的方式编写方法cellForRowAtIndexPath。例如,在我的情况下,我正在使用indexPath.row并准备单元格并将其返回。

只有当变量numRows大于0时才会调用此方法。所以只要你有动态内容,就像我上面解释的那样更新numRows的内容并立即调用方法[YourtableView reloadData];