Ich denke, das könnte einer meiner Anfängerfehler sein, die ich nicht herausfinden konnte.Tabelle View Daten erscheint auf Tabellenansicht mit Zeilenauswahl Code
Ich habe eine App, die eine Tabellenansicht hat. Es hat Text Label und Detail Text Label.
Wenn ich eine Zeile auswähle, bringe ich mich zu einem anderen Storyboard, das segue verwendet ... das alles funktioniert gut außer der Tabellenansicht auf meinem Simulator.
Detail Text Label zeigt sich auf dem Simulator in diesem Bild eingekreist.
Hier ist der Code, den ich verwende, um Zelle/Zeile zu erkennen. Wenn ich es kommentiere, geht dieses Problem weg ...
Was Sie im roten Kreis sehen, ist gradeelected was auch in der Detailtextbeschriftung in der Tabellenansicht ist.
func sectionIndexTitles(for tableView: UITableView) -> [String]? {
let gradeselected = String(describing: sgrade)
return [gradeselected]
}
Screenshot von Simulator mit dem Thema
Bitte helfen Sie dieses Problem bei der Lösung. Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.
Xcode 9.1 Swift 4
@Caleb hier ist mein Code.
import UIKit
class StudentsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var cellButton: UIButton!
@IBOutlet weak var studentDetailTable: UITableView!
var sname:[String]?
var sgrade:[Int]?
var gradetext = "Grade:"
var sstudentname = ""
override func viewDidLoad() {
super.viewDidLoad()
studentDetailTable.delegate = self
studentDetailTable.dataSource = self
// Do any additional setup after loading the view.
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return sname!.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = studentDetailTable.dequeueReusableCell(withIdentifier: "cell")
cell?.textLabel?.text = sname[indexPath.row] + gradetext + String(sgrade[indexPath.row])
sstudentname = sname![indexPath.row]
cell?.detailTextLabel?.text = String(sgrade![indexPath.row])
cell?.layer.cornerRadius = (cell?.frame.height)!/2
cell?.backgroundColor = UIColor.blue
cell?.textLabel?.textColor = UIColor.white
cell?.layer.borderWidth = 6.0
cell?.layer.cornerRadius = 15
cell?.layer.borderColor = UIColor.white.cgColor
cell?.textLabel?.textColor = UIColor.white
return cell!
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let selectedIndex = tableView.dataSource?.sectionIndexTitles!(for: studentDetailTable)
let indexPath = tableView.indexPathForSelectedRow
let currentCell = tableView.cellForRow(at: indexPath!)!
let scell = currentCell.detailTextLabel!.text!
sstudentname = (currentCell.textLabel?.text)!
}
// - If I comment this section of the code issue goes away.
func sectionIndexTitles(for tableView: UITableView) -> [String]? {
let gradeselected = String(describing: sgrade)
return [gradeselected]
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let myKLVC = segue.destination as! KindergartenLevelViewController
myKLVC.klvstudentname = sstudentname
}
Zeigen Sie Ihre Storyboard-Benutzeroberfläche für diesen Bildschirm an. –
Sie sollten didSelectetRowAtIndexPath eine Delegate-Methode von IUTableView verwenden, die Ihnen sagt, welche Zelle Sie angetippt haben – Vikky
Was ist Ihre 'sgrade' Variable? Warum konvertierst du es mit 'String (beschreibend)' in 'String'? Und warum gibst du ein Array zurück, das nur diese eine Saite enthält? Beachten Sie, dass die 'sectionIndexTitles' nichts mit einer Zelle oder einer ausgewählten Zeile zu tun haben. – rmaddy