it-swarm.com.de

UITableView mit Swift

Mein TapCell1.Swift

Dies ist benutzerdefiniert UITableViewCell View

import UIKit

class TapCell1: UITableViewCell
{
    @IBOutlet var labelText : UILabel

    init(style: UITableViewCellStyle, reuseIdentifier: String!)
    {
        println("Ente")
        super.init(style: UITableViewCellStyle.Value1, reuseIdentifier: reuseIdentifier)
    }

    override func setSelected(selected: Bool, animated: Bool)
    {

        super.setSelected(selected, animated: animated)
    }
}

Mein ViewController.Swift

All DataSource und Delegates sind korrekt festgelegt. Aber meine benutzerdefinierte Zelle wird nicht angezeigt.

import UIKit

class NextViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
    {
        @IBOutlet var label: UILabel

        @IBOutlet var tableView : UITableView

        var getvalue = NSString()

        override func viewDidLoad()
        {
            super.viewDidLoad()

            label.text="HELLO GOLD"

            println("hello : \(getvalue)")
            self.tableView.registerClass(TapCell1.self, forCellReuseIdentifier: "Cell")
        }

        func tableView(tableView:UITableView!, numberOfRowsInSection section:Int)->Int
        {
            return 5
        }

        func numberOfSectionsInTableView(tableView:UITableView!)->Int
        {
            return 1
        }

        func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!
        {
            var cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as TapCell1
            cell.labelText.text="Cell Text"
            return cell
        }

        override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
        }
}

Das Problem ist, dass meine benutzerdefinierte Zelle nicht angezeigt wird. Bitte schlagen Sie alles vor, was ich falsch gemacht habe.

Hinweis: hier ist mein Code My File Download Link

24
PREMKUMAR

Ich habe es endlich geschafft.

Für TapCell1.Swift

import UIKit

class TapCell1: UITableViewCell {

    @IBOutlet var labelTitle: UILabel

    init(style: UITableViewCellStyle, reuseIdentifier: String!) {
        super.init(style: UITableViewCellStyle.Value1, reuseIdentifier: reuseIdentifier)
    }
}

Für NextViewController.Swift

import UIKit

class NextViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet var tableView: UITableView

    var ListArray=NSMutableArray()

    override func viewDidLoad() {
        super.viewDidLoad()

        let nibName = UINib(nibName: "TapCell1", bundle:nil)
        self.tableView.registerNib(nibName, forCellReuseIdentifier: "Cell")

        for i in 0...70 {
            ListArray .addObject("Content: \(i)")
        }
    }


    func tableView(tableView: UITableView!, numberOfRowsInSection section: Int)->Int {
       return ListArray.count
    }

    func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return 51
    }

    func numberOfSectionsInTableView(tableView: UITableView!) -> Int {
        return 1
    }

    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as TapCell1

        //cell.titleLabel.text = "\(ListArray.objectAtIndex(indexPath.item))"

        cell.labelTitle.text = "\(ListArray.objectAtIndex(indexPath.row))"

        return cell
    }
}

Mein Arbeitscode-Link: ANGEPASSTE TABELLE

46
PREMKUMAR

Sie sollten die class für die Zelle registrieren. Ändern Sie dazu Diese Codezeile in 

self.tableView.registerClass(TapCell1.classForCoder(), forCellReuseIdentifier: "Cell")

Bearbeiten

Ihr Code sieht gut aus, ich habe es überprüft 

//cell.labelText.text="Cell Text"

cell.textLabel.text="Cell Text"   // use like this
9
Anil Varghese

Die Lösung ist höchstwahrscheinlich auf die manuelle Einstellung der Zellenhöhe festgelegt:

override func tableView(tableView:UITableView!, heightForRowAtIndexPath indexPath:NSIndexPath)->CGFloat
{
    return 44
}

Ich glaube, es ist ein Xcode-Beta-6-Fehler.

3
Micah

Ich konnte jetzt Custom UITableViewCell zum Laufen bringen.

Funktioniert an

  • Läuft auf Xcode 6 Beta 6
  • Läuft auf Xcode 6 Beta 5

  • iOS ist 7.1

Wie

  • Ich habe eine ".xib" -Datei für die Zelle erstellt.
  • Ich kopiere es in das Storyboard.
  • Über das Storyboard gebe ich ihm einen Identifier.
  • Ich stelle sicher, dass es sich um ein Unter-Kind einer Tableview handelt

Auf diese Weise müssen Sie keine Klasse/Feder usw. registrieren.

Dies ist meine eigene Zelle.

 import UIKit 

 Klasse TestCell: UITableViewCell {

 @IBOutlet var titleImageView: UIImageView! 
 @IBOutlet var titleLabel: UILabel! 

 Überschreiben Sie init (Stil: UITableViewCellStyle, reuseIdentifier: String!) {
 super.init (style: style, reuseIdentifier: reuseIdentifier) ​​
 } 

 Überschreiben Sie func awakeFromNib () {
 super.awakeFromNib () 
 // Initialisierungscode 
 } 

 erforderlicher init (Coder aDecoder: NSCoder) {
 super.init (coder: aDecoder) 
 } 
} 

Aus Ihrer Sicht oder wo auch immer Sie "UITableViewDataSource" erweitern. Stellen Sie sicher, dass "cell2" dem "Identifier" entspricht, den Sie über das Storyboard vergeben haben.

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

 var cell: TestCell = tableView.dequeueReusableCellWithIdentifier ("cell2", forIndexPath: indexPath) als TestCell 

 // Beispiel für die Verwendung der benutzerdefinierten Elemente .
 cell.titleLabel.text = self.items [indexPath.row] 

 var topImage = UIImage (benannt: "fv.png") 
 cell.titleImageView.image = topImage 

 zurückgeben Zelle 
} 

uitableviewcell

1
thefreshteapot

Versuchen Sie diesen folgenden Code

var cell:CustomTableViewCell = tableView.dequeueReusableCellWithIdentifier("CustomTableViewCell") as CustomTableViewCell

https://github.com/iappvk/TableView-Swift

0
Vijay

Wenn Sie Storyboard nicht verwenden, erstellen Sie eine neue Datei als Unterklasse von UITableViewCell. Aktivieren Sie das Kontrollkästchen "XIB-Dateien erstellen", nachdem Sie Ihre benutzerdefinierte Zelle festgelegt haben. Hier ist der Code für die Tabellenansicht 

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

    var customcell:CustomTableViewCellClass? = tableView.dequeueReusableCellWithIdentifier("cell") as? CustomTableViewCellClass
    if  (customcell==nil)
    {
        var nib:NSArray=NSBundle.mainBundle().loadNibNamed("CustomTableViewCellClass", owner: self, options: nil)

        customcell = nib.objectAtIndex(0) as? CustomTableViewCell
    }

    return customcell!


}
0
guru

Versuchen Sie folgenden Code: 

var cell = tableView.dequeueReusableCell(withIdentifier: "CustomCellTableView") as? CustomCellTableView
0
Soumya Soni

Überprüfen Sie Ihr Storyboard, wählen Sie die Zelle aus, und sehen Sie sich den Identitätsinspektor an. Wählen Sie KLASSE aus, geben Sie CustomClass ein, und MODUL, und geben Sie Ihren Projektnamen an 

Ich habe dies getan. Es funktioniert perfekt. Versuchen Sie diesen Tipp, um Fehler zu vermeiden, die unter Bild und Code zu sehen sind

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

 // let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: nil)

  //  cell.textLabel.text = array[indexPath!.row] as String

let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as CustomTableViewCell

    cell.nameLabel.text = array[indexPath!.row] as String
    cell.RestaurentView.image = UIImage(named:images[indexPath!.row])

    return cell
}
0
Quad

Erweiterung von NSObject

extension NSObject {    
    var name: String {
        return String(describing: type(of: self))
    } 
    class var name: String {
        return String(describing: self)
    }
}

Eigenschaften in Custom UITableViewCell

class var nib: UINib {
    return UINib(nibName:YourTableViewCell.name, bundle: nil)
}
class var idetifier: String {
    return YourTableViewCell.name
}

In UIViewController hinzufügen

self.tableView.registerNib(YourTableViewCell.nib, forCellReuseIdentifier: YourTableViewCell.idetifier)

let cell = tableView.dequeueReusableCellWithIdentifier(YourTableViewCell.idetifier, forIndexPath: indexPath) as! YourTableViewCell
0
Rakesh Kunwar