In Swift v3 wird mein TableView nicht erneut geladen. Ich bin mir ziemlich sicher, dass dieser Code in 2.0 funktioniert.TableView Reload von Segue funktioniert nicht in Swift 3
@IBAction func unwindToLevelListView(_ segue: UIStoryboardSegue)
{
print("RELOADING VIEW")
TableView.reloadData()
}
RELOADING VIEW wird gedruckt, aber das TableView wird nicht neu geladen. Ich habe auch versucht, diesen Code in ViewDidLoad und ViewDidAppear zu setzen, aber keiner von denen funktionierte.
P.S. Ein wichtiger Punkt ist, dass die Zeilen bei der Anzeige nicht erneut geladen werden (d. H. Nach unten und dann wieder nach oben).
Hilfe wird sehr geschätzt.
-Code folgt:
override func viewDidAppear(_ animated: Bool)
{
TableView.reloadData()
}
// Create Table
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "LevelSelected", for: indexPath) as! LevelListCell
// Set labels
cell.levelNameLabel.text = "LEVEL " + String(puzzleLevels[(indexPath as NSIndexPath).row])
let unlocked: Bool = puzzleUnlocked[(indexPath as NSIndexPath).row]
if(challengeSelected == 1 && (indexPath as NSIndexPath).row == 0 && puzzleUnlocked[1] == false)
{
cell.levelStatusLabel.text = "Not Solved"
}
else if(unlocked == true)
{
cell.levelStatusLabel.text = "Solved"
}
else
{
cell.levelStatusLabel.text = "Not Solved"
}
// Set color
cell.levelNameLabel.textColor = UIColor.white
cell.levelStatusLabel.textColor = UIColor.white
if unlocked == false
{
cell.backgroundColor = UIColor.lightGray
// Uncomment to disable interaction
// cell.userInteractionEnabled = false // Comment Out to Remove Lock
}
else if unlocked == true
{
cell.backgroundColor = UIColor(red: 0, green: 64, blue: 128, alpha: 0.0)
cell.isUserInteractionEnabled = true
}
return cell
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return puzzleLevels.count
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
levelSelected = (indexPath as NSIndexPath).row
self.performSegue(withIdentifier: "LevelSelected", sender: levelSelected);
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
if (segue.identifier == "LevelSelected")
{
if let nextViewController = (segue.destination as? GameViewController)
{
nextViewController.selectedLevel = levelSelected
nextViewController.selectedChallenge = challengeSelected
}
print("List View Level Selected:\(levelSelected)")
}
}
@IBAction func unwindToLevelListView(_ segue: UIStoryboardSegue)
{
print("RELOADING VIEW")
TableView.reloadData()
}
Haben Sie eine Steckdose für die Tabellenansicht festgelegt/verwenden Sie einen TableView-Controller? reloadData() lädt die Zeilen, die sichtbar sind, während der Sequenz neu, es ist noch keine Zeile sichtbar. deshalb heißt es nicht. versuche, self.tableView.reload() in "viewDidApprear" zu setzen - das muss funktionieren. Wenn es nicht funktioniert, gibt es ein weiteres Problem mit Ihrem Code. In diesem Fall geben Sie bitte den Code ein, um Ihre Tabelle zu füllen –
Vielen Dank. Ich habe es in viewDidAppear hinzugefügt und es wird leider immer noch nicht angezeigt. Bereitstellen des Codes für das TableView. Alle anderen Funktionen außerhalb des Neuladens funktionieren. – Apocal