【发布时间】: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的调用。 -
我用实际更准确的问题编辑了我的问题.. 你能告诉克里斯吗?
标签: ios arrays swift uitableview tableview