将数组数据从 ViewController 传递到 TableView

Posted

技术标签:

【中文标题】将数组数据从 ViewController 传递到 TableView【英文标题】:Pass arrays data from a ViewController to a TableView 【发布时间】:2017-09-13 22:40:38 【问题描述】:

我找不到这种特殊情况,我必须将两个或多个字符串数组传递并附加到位于第二个 ViewController 中的 TableView 中。 我想在两个不同的 UILabel 中推送两个不同的字符串

我有一些数据通过 mainViewController 中的 UIAlertViewController 进入

var name = alertController.textFields?[0].text
var number = alertController.textFields?[1].text

然后我获取这些数据,每次我得到一组新的名称/数字时,我都会将它附加到 MainVC 中的字符串数组中

var playerNames = [String]()
var playerNumbers = [String]()
self.playerNames.append(name!)
self.playerNumbers.append(number!)

现在我用 .xib 创建了一个表格视图和一个自定义单元格,我会调用它并设置为这样的自定义标签

第二个 ViewController 中的 TableView

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> 
UITableViewCell 

customCell.tableViewCellNumber.text = mainVC.playerNumbers[indexPath.row]
customCell.tableViewCellName.text = mainVC.playerNames[indexPath.row]
return customCell

因此,对于每个新集合,它都会创建一个带有名称 + 编号的新行

我尝试了从 userDefaults 到 performForSegue 的任何方法,但它不起作用! 我可以很好地打印数组,但它根本不会显示新行。

编辑:实际问题

好的,我想我误解了 NsUserDefaults 的使用...目前我在我的第二个控制器的 viewDidLoad 中

if ((UserDefaults.standard.array(forKey: "playerNames")) != nil)
            let playerNames = (UserDefaults.standard.array(forKey: 
"playerNames") as? [String])!
            print(playerNames)
        

    

它实际上打印了新值,现在我希望新的附加值显示在自定义单元格 label.text cell.nameLabel.text = The Value 我如何每次检索该值并存储它? 如果我尝试使用 playerNames,它说它不存在..

【问题讨论】:

很难说没有看到更多的代码。当您的数据集初始化或更改时,您是否调用tableView.reloadData() 嘿,编辑并添加了整个 VC,createView() 中发生了很多事情,所以这并不容易。我在 CellForRowAt 索引路径中尝试了 reloadData,但它不起作用。我想这只是我,我不知道如何使 UserDefaults 工作,因为如果我尝试在第二个 viewController 的 ViewWillAppear 中打印数组,实际的数组就在那里。 我建议在第二个视图控制器的viewWillAppear 中调用tableView.reloadData(),而不是在cellForRowAtIndexPath 中。 tableView.reloadData() 将重新显示表格视图并触发对 cellForRowAtIndexPath 的调用。 我用实际更准确的问题编辑了我的问题.. 你能告诉克里斯吗? 【参考方案1】:

您是否在输入数据后同步用户默认值? UserDefaults.synchronize()

【讨论】:

我必须在单元格内同步它吗?我应该在 CellForRowAt IndexPath 里面做吗? 这不是回答,而是作为评论。 我无法发表评论,因为我没有足够高的声誉。我希望我可以评论其他人的帖子。告我 当你在 userdefaults 中插入一些东西后马上做

以上是关于将数组数据从 ViewController 传递到 TableView的主要内容,如果未能解决你的问题,请参考以下文章

使用没有 segues 的协议将数组从 appDelegate 传递到 Viewcontroller

将数组从一个 UIViewController 传递到另一个 ViewController 返回 null

如何将 Firebase iOS 中的数据从 TableViewController 传递到另一个 ViewController

将数组从 ViewController 传递给 AppDelegate

从按钮将值传递给视图控制器字典

将数据从 ViewController 传递到 TabBarController