我找不到這個特定的情況,我必須傳遞並追加兩個或更多的字符串數組到第二個ViewController中的TableView中。 我想要把裏面兩個不同的UILabels從一個ViewController傳遞數組數據到一個TableView
兩個不同的字符串我有一些數據,得到內部通過UIAlertViewController在mainViewController
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自定義單元格,我會打電話給它,並設置爲自定義標籤這樣
的TableView在第二的ViewController
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()'嗎? – Chris
嘿,編輯並添加了整個VC,在createView()中發生了很多事情,所以它並不容易。我在CellForRowAt索引路徑中嘗試了reloadData,但它不起作用。我想這只是我,我不知道如何使UserDefaults工作,因爲如果我嘗試在第二個viewController的ViewWillAppear中打印數組,實際的數組在那裏。 – dan
我建議在第二個視圖控制器的'viewWillAppear'中調用'tableView.reloadData()'而不是'cellForRowAtIndexPath'。 'tableView.reloadData()'將重新顯示錶視圖並觸發對'cellForRowAtIndexPath'的調用。 – Chris