将数组数据从 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的主要内容,如果未能解决你的问题,请参考以下文章