【问题标题】:How can I use a button on one view controller to add text to a row in a table view in another view controller?如何使用一个视图控制器上的按钮将文本添加到另一个视图控制器的表视图中的一行?
【发布时间】:2014-03-19 01:27:40
【问题描述】:

所以我对 iOS 还是很陌生,这对我来说有点问题。我正在(尝试)开发一种在屏幕上显示文本标签的练习应用程序,如果用户喜欢该文本标签,那么他们可以收藏它。然后,所有用户最喜欢的文本标签都将出现在表格视图中。我的问题是如何利用按钮将文本标签添加到表格视图?基本上,我对如何制作收藏夹列表感到困惑。为了更清楚,这里是我的问题的一个非常简单的物理表示。

我想从这里开始:

http://i.stack.imgur.com/3irmh.png

对此,当用户点击按钮时:

http://i.stack.imgur.com/HdSnP.png

并且能够在按下该按钮时继续填充表格视图。我尝试研究它,但我发现的所有内容都是关于如何使用表格视图上的按钮向表格视图添加新行;那不是我要找的。有什么想法吗?

【问题讨论】:

  • 另外,我正在使用导航控制器,因为我希望表格视图以模态方式呈现,就好像它从屏幕底部向上滑动一样。
  • 您可能想要一个包含他们“最喜欢”的所有文本的用户类。然后,当他们查看他们的收藏夹时,它会从该数组中提取文本。

标签: ios uiviewcontroller uitableview


【解决方案1】:

您的表格视图是数据驱动的,即它的内容是从 NSArray 或类似的形式创建的。您可能熟悉 UITableViewDatasource,它(至少)查询数据以获取要显示的项目数和单元格的内容。所以你的按钮需要做的就是给一个数组添加一个标签(最简单的就是一个 NSString *)。表格视图是根据数组中的内容创建的 - 基本上您所做的只是[tableView reloadData],新内容显示在表格中。

如果表视图在另一个视图控制器中,则使数组成为该视图控制器上的属性。当您在一个控制器上构建了数组并且想要切换到具有表格视图的控制器时,只需在创建数组之后但在将其推送到导航堆栈之前将数组设置在表格视图的视图控制器上。

【讨论】:

  • 好吧,我一直跟着你。我让我的按钮将一个字符串添加到一个可变数组中。然后我添加了一个 NSLog 语句以确保它有效,并且确实有效。但是,当我尝试填充表格视图时,我什么也没看到,并且数组似乎为空。我想我可能遗漏了你解释的最后一段,但这对我来说仍然有点困惑。我是在 tableViewController 上创建另一个数组,然后用初始数组设置它,还是......?我不确定……
  • 您只需要确保您的新视图控制器(具有表格视图的那个)的数组属性填充了您要在表格中显示的内容列表。 UITableViewDatasource 方法将从这个数组中填充表格。在新的视图控制器中,该属性应该是 NSArray,因为它不会在该视图控制器中更改。正如您提到的,旧的视图控制器有一个可变数组。做类似 newViewController.tableItemsSourceArray = [NSArray arrayWithArray:self.myMutableArray];
  • 最后一个问题:那么我在哪里添加最后一段代码,newViewController.tableItemsSourceArray = [NSArray arrayWithArray:self.myMutableArray]; ?是当用户点击按钮时,还是在prepareForSegue或其他什么地方?
  • 对。如果使用 segue,请在 prepareForSeque 中执行,目标是目标视图控制器。如果使用其他方法(导航控制器推送),则在创建新视图控制器时执行。
猜你喜欢
  • 2023-03-11
  • 1970-01-01
  • 2015-12-02
  • 2016-09-06
  • 2013-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多