实时:向 UITableViewController 中的表添加行

发布于 2024-11-09 19:15:50 字数 298 浏览 0 评论 0原文

我刚刚检查了应用程序的数据源和 UITableView,它们似乎运行良好。 我可以使用代码 - [...initWithObjects:(id),nil] 在 TableView 中添加一行,并且我可以在代码级别执行此操作。

这就是我想做的。

  1. 在表格顶部创建“添加”按钮或“+”号。
  2. 因此,当应用程序运行时......如果我单击该按钮,我应该能够为该行设置名称。
  3. 如果我需要创建更多行并为它们设置名称,我只需按添加按钮,然后再次为行输入新名称。

我该如何实时处理这个问题?

I just checked the datasource and the UITableView of the app and they seem to be working well.
I can add a row to the TableView by using the code - [...initWithObjects:(id),nil] and I could do this at code level.

This is what I want to do.

  1. Create an Add button or a '+' sign on top of the table.
  2. So while the App is running.. If I click that, I should be able to set a name for that row.
  3. If I need to create more rows and set names for them, I just press the add button and I again type new names for the rows .

How do I go about this in real time?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

给我一枪 2024-11-16 19:15:50

UITableView 方法 -insertRowsAtIndexPaths:withRowAnimation: 用于以编程方式向表添加行。

此答案相当直接地解决了您的问题。

The UITableView method -insertRowsAtIndexPaths:withRowAnimation: is used to add rows to a table programmatically.

This answer addresses your problem fairly directly.

秋凉 2024-11-16 19:15:50

这相当简单……而且这是凭记忆写的,所以我可能在这里或那里有错字。不过这个想法应该可行。

tableView:numberOfRowsInSection: 中,您给出 return [myArray count] + 1; (您要向总数中添加一行)

tableView:cellForRowAtIndexPath: 中,其中 [indexPath row] == [myArray count] 的单元格是使用“Add Row”文本创建一个单元格,而不是无论您的数据源是什么,因为它会转到 [myArray count]-1。 (我认为这是有道理的)。
例如,

    if([indexPath row] == [myArray count]){
        cell.textLabel.text = @"Add New Item";
    } else {
         cell.textLabel.text = [[myArray objectAtIndex:[indexPath row]]
                                           valueForKey:@"title"];            
    }
    return cell;

然后您可以将新记录插入到 myArray 和表中。

至于实际更改新行详细信息,您可以选择使用某种文本输入创建自定义单元格或使用带提示的模式视图控制器。这真的取决于你。

It's fairly straightforward... and this is from memory, so I might have a typo here or there. The idea should work though.

In tableView:numberOfRowsInSection: you give return [myArray count] + 1; (you're adding one row to the total)

In tableView:cellForRowAtIndexPath: the cell where [indexPath row] == [myArray count] is where make a cell with "Add Row" text, rather than whatever your data source is, because it goes to [myArray count]-1. (I think that makes sense).
for example,

    if([indexPath row] == [myArray count]){
        cell.textLabel.text = @"Add New Item";
    } else {
         cell.textLabel.text = [[myArray objectAtIndex:[indexPath row]]
                                           valueForKey:@"title"];            
    }
    return cell;

Then you would insert the new record into your myArray and the table.

As for actually changing the new row details, you have some options of creating a custom cell with some kind of textual input or using a modal view controller with a prompt. It's really up to you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文