2017-09-13 97 views
0

我找不到這個特定的情況,我必須傳遞並追加兩個或更多的字符串數組到第二個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 
} 

所以爲每一位新集它使一個新行名稱+編號 customCell image

我試圖從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,它說它不存在..

+0

難以辨認更多代碼。當你的數據集被初始化或改變時,你調用'tableView.reloadData()'嗎? – Chris

+0

嘿,編輯並添加了整個VC,在createView()中發生了很多事情,所以它並不容易。我在CellForRowAt索引路徑中嘗試了reloadData,但它不起作用。我想這只是我,我不知道如何使UserDefaults工作,因爲如果我嘗試在第二個viewController的ViewWillAppear中打印數組,實際的數組在那裏。 – dan

+0

我建議在第二個視圖控制器的'viewWillAppear'中調用'tableView.reloadData()'而不是'cellForRowAtIndexPath'。 'tableView.reloadData()'將重新顯示錶視圖並觸發對'cellForRowAtIndexPath'的調用。 – Chris

回答

0

您是否在輸入數據後同步用戶默認值? UserDefaults.synchronize()

+0

我必須在單元格內同步它嗎?我應該在CellForRowAt IndexPath中執行它嗎? – dan

+0

這是一個除了答案之外的評論。 – nayem

+0

我不能評論,因爲我沒有足夠的聲望。我希望我能評論其他人民的職位。 Sue Me – Steve

相關問題