2015-10-07 8 views
5

Ich habe gerade angefangen, Swift als Pro-Sprache zu verwenden und ich habe ein Problem mit benutzerdefinierten Zellen.Swift Custom Cell Erstellen Sie Ihre eigene Zelle mit Etiketten

Wenn ich versuche, benutzerdefinierte Zellen zu erstellen, und dann vorwärts gehen und versuchen, sie so zu gestalten, wie ich sie brauche (mit Stil auf Benutzerdefiniert), sieht alles gut aus. Jetzt weiß ich nicht, wie ich bestimmte Daten in sie einfügen soll, da alle Tutorials, die ich gefunden habe, die Style-Option "basic" benutzt haben, wo sie nur ein Textlabel haben, dem sie ihre Daten zuweisen.

Jetzt, wenn ich "Kontrolle ziehen" meine Etiketten in meinen Code, gebe ich ihnen bestimmte Namen wie "dateLabel" oder "sourceLabel", um die Daten korrekt einzufügen.

jetzt bin ich nicht sicher, und konnten keine Antworten finden, die funktioniert, wie meine eigene Labels erinnern gemacht, so dass ich meine Daten, um sie zuordnen können ...

Vielleicht hat jemand von euch könnte helfen Sie mir mit diesem, da ich bin ziemlich sicher, es ist ein einfaches Problem, aber ich coudln't alle Ressourcen zu finden, um diese ^^

enter image description here

hoffentlich die Schrift ist nicht zu klein, ich wollte nur euch um die erros zu sehen, die ich bekomme.

Ich benutzte das folgende Tutorial als Richtlinie, da sie die einzige war, die nur die Art und Weise dieser Kerl tat es funktionierte: https://www.youtube.com/watch?v=0qE8olxB3Kk

überprüfte ich die Kennung und er richtig eingestellt ist und ich nicht finden können, alles online, wie ich richtig auf meine eigenen Labels mit ihren richtigen Namen verweisen muss.

jede mögliche Hilfe würde geschätzt :)

+0

Um eine „custom“ Zelle zu verwenden, müssen Sie auch eine benutzerdefinierte Unterklasse von 'UITableViewCell' erstellen, die Sie dann Ihre Etiketten Haken an der Set & Zelle-Prototyp-Klasse in Ihrem Storyboard. Die Fehler, die Sie sehen, sagen Ihnen, dass eine normale UITableViewCell, die Sie erstellen und von dieser Methode zurückgeben, keine Eigenschaften hat, die den von Ihnen erstellten benutzerdefinierten Labels entsprechen. Wo du aus der Warteschlange entfernst, musst du sagen, dass es deine benutzerdefinierte Zellenklasse ist. Vielleicht suchen Sie nach Tutorials für benutzerdefinierte Zellenunterklassen. Übrigens gelten die gleichen grundlegenden Konzepte und Prozesse auch für die Erstellung benutzerdefinierter UICollectionView-Zellen. – mc01

Antwort

16

die folgenden Schritte versuchen:

  1. Erstellen Sie eine Ansicht Zellklasse benutzerdefinierte Tabelle, die UITableViewCell erstreckt. In meinem Beispiel heißt die benutzerdefinierte Tabellensicht-Zellklasse MyCustomTableViewCell.

  2. Aktualisieren Sie die Zelle Ihres Storyboards so, dass sie Ihre benutzerdefinierte Tabellenansichtszellenklasse verwendet. Wechseln Sie zu dem Identity Inspector, und legen Sie den Class Wert auf den Name Ihrer benutzerdefinierten Tabellenansichtszellenklasse fest. Set Custom Cell Class in Identity Inspector

  3. Update-Zelle Storyboard ist und geben ihm eine Wiederverwendung Identität Wert. Gehen Sie zu Attributes Inspector und setzen Sie den Wert Identifier Wert. Zum Beispiel gab ich meiner Zelle einen Identifier-Wert von MyCustomCell. Set the Reuse Identity of your Cell

  4. Steuerung ziehen Sie die Etiketten der Zelle in die neue Ansicht Zellklasse benutzerdefinierte Tabelle (das heißt die MyCustomTableViewCell Klasse).


Sobald Sie die oben genannten Schritte getan haben, werden Sie in der Lage sein, um die Etiketten zugreifen, wenn Sie dequeue Ihre Zelle in der tableView:cellForRowAtIndexPath: Methode.Wie das folgende Codefragment zeigt, müssen Sie: 1) die Zelle mit der Wiederbenutzungskennung, die Sie in den obigen Schritten festgelegt haben, ermitteln und 2) in Ihre benutzerdefinierte Tabellenansichtszellenklasse umwandeln.

Hier ist zum Beispiel, wie Ihre benutzerdefinierte Tabellenansicht Zelle aussehen würde, wenn Sie es MyCustomTableViewCell benannt. Nachdem Sie die Klasse erstellt haben, ziehen Sie Ihre Beschriftungen in diese Klasse.

class MyCustomTableViewCell: UITableViewCell {  
    @IBOutlet weak var categoryLabel: UILabel! 
    @IBOutlet weak var dateLabel: UILabel! 
    @IBOutlet weak var sourceLabel: UILabel! 
    @IBOutlet weak var titleLabel: UILabel! 
} 

Ihre ViewController könnte wie folgt aussehen:

// NOTE: I subclassed UITableViewController since it provides the 
// delegate and data source protocols. Consider doing this. 
class ViewController: UITableViewController { 

    // You do NOT need your UILabels since they moved to your 
    // custom cell class. 

    // ... 
    // Omitting your other methods in this code snippet for brevity. 
    // ... 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     // Use your cell's reuse identifier and cast the result 
     // to your custom table cell class. 
     let article = tableView.dequeueReusableCellWithIdentifier("MyCustomCell", forIndexPath: indexPath) as! MyCustomTableViewCell 

     // You should have access to your labels; assign the values. 
     article.categoryLabel?.text = "something"    
     article.dateLabel?.text = "something"    
     article.sourceLabel?.text = "something"    
     article.titleLabel?.text = "something"    

     return article 
    } 
} 
+0

Angenommen, wir erstellen keine benutzerdefinierte Tabellenansichtszellenklasse, verwenden Sie einfach die standardmäßige UITableViewCell-Klasse und holen Sie das Label aus der benutzerdefinierten Zelle mit dem Tag! ist es möglich ?? M erhält fatalen Fehler: unerwartet gefunden Null beim Auspacken eines optionalen Werts. Bitte klären Sie dies. (Hinweis * -Beim Erstellen von benutzerdefinierten Zellen, die ich getan habe und gut funktioniert) –

+0

Ich bin mir nicht ganz sicher, was Sie fragen. Der Standard ['UITableViewCell'] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewCell_Class/) hat drei Felder:' textLabel', 'detailTextLabel' und' imageView'. Wenn Sie den Standardwert verwenden, müssen Sie keine benutzerdefinierte Zellklasse verwenden. – whyceewhite

Verwandte Themen