2016-10-28 8 views
-2

Dies ist der Fehler, den ich erhalte. Ich bin mir sicher, dass dies eine einfache Lösung ist, aber ich habe ein paar Probleme damit. Ich habe diesen Thread aktualisiert, um den Code hinzuzufügen."Wert des Typs 'UITableViewCell' ... konnte nicht in 'UILabel' umgewandelt werden"

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    // #warning Incomplete implementation, return the number of rows 
    return 5 
} 


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "CheckListItem", for: indexPath) 

    let label = cell.viewWithTag(1000) as! UILabel 

    switch indexPath.row { 
    case 0: 
     label.text = "Walk the dog" 
    case 1: 
     label.text = "Brush my teeth" 
    case 2: 
     label.text = "Learn iOS development" 
    case 3: 
     label.text = "Soccer practice" 
    case 4: 
     label.text = "Eat ice cream" 
    default: 
     label.text = "Nothing" 
    } 
    return cell 
} 

Screenshot

+2

Haben Sie das Tag auf dem Etikett oder der Zelle festgelegt? Außerdem sollten Sie wirklich nicht mit Tags arbeiten. Unterklassen Sie Ihre Zelle und legen Sie eine Verbindung zwischen dem Label und einer Eigenschaft in der Zellenunterklasse fest. –

+1

Bitte geben Sie keinen Code als Bild ein. Bitte kopieren Sie den relevanten Code und fügen Sie ihn als Text in Ihre Frage ein. Es erleichtert das Lesen und erleichtert das Nachschlagen bei der Beantwortung. – rmaddy

+0

Danke. Ich musste das Etikett auf dem Etikett setzen, NICHT die Zelle. –

Antwort

0

Dies ist, was die viewWithTag(_:) Funktion hat:

Gibt die nächsten Nachkommen Sicht (einschließlich mich selbst) mit einem bestimmten Tag oder null, wenn kein subview den Tag hat.

Also, was Sie immer wieder ist das Objekt selbst sowie sein nächster Nachkomme. Es sieht aus wie Sie nur den Text in der Zelle zu setzen versucht, so was Sie tun können, ist nur der Code, dies ändern:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "CheckListItem", for: indexPath) 

    switch indexPath.row { 
    case 0: 
     cell.textLabel.text = "Walk the dog" 
    case 1: 
     cell.textLabel.text = "Brush my teeth" 
    case 2: 
     cell.textLabel.text = "Learn iOS development" 
    case 3: 
     cell.textLabel.text = "Soccer practice" 
    case 4: 
     cell.textLabel.text = "Eat ice cream" 
    default: 
     cell.textLabel.text = "Nothing" 
    } 
    return cell 
} 
0

Ich arbeitete durch iOS Apprentice Serie und traf nur das gleiche Problem wie du machtest.

Ich denke, Sie möchten überprüfen, wo Sie das Tag anhängen: 1000 in Main.storyboard - wenn Sie aus diesem Grund scheitern, haben Sie wahrscheinlich das Tag an die UITableViewCell anstelle der Bezeichnung (von UILabel) in der Inhaltsansicht eingeben.

Verwandte Themen