Mon TapCell1.Swift
Ceci est personnalisé 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)
}
}
Mon ViewController.Swift
Toutes ses sources de données et tous ses délégués sont définis correctement.Mais ma cellule personnalisée ne s'affiche pas.
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.
}
}
Le problème est que ma cellule personnalisée n'est pas affichée. S'il vous plaît suggérer quelque chose que j'ai mal fait.
Remarque: voici mon code Lien de téléchargement de mon fichier
Je l'ai finalement fait.
Pour TapCell1.Swift
import UIKit
class TapCell1: UITableViewCell {
@IBOutlet var labelTitle: UILabel
init(style: UITableViewCellStyle, reuseIdentifier: String!) {
super.init(style: UITableViewCellStyle.Value1, reuseIdentifier: reuseIdentifier)
}
}
Pour 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
}
}
Mon lien de code de travail: TABLE PERSONNALISÉE
Vous devez enregistrer la class
pour la cellule. Pour cela, changez cette ligne de code en
self.tableView.registerClass(TapCell1.classForCoder(), forCellReuseIdentifier: "Cell")
Modifier
Votre code est bien, je l'ai vérifié
//cell.labelText.text="Cell Text"
cell.textLabel.text="Cell Text" // use like this
La solution est probablement de déterminer la hauteur de la cellule manuellement:
override func tableView(tableView:UITableView!, heightForRowAtIndexPath indexPath:NSIndexPath)->CGFloat
{
return 44
}
Je crois que c'est un bug de Xcode beta 6.
Je suis maintenant capable de faire fonctionner Custom UITableViewCell.
Fonctionne sur Xcode 6 beta 5
iOS est 7.1
En procédant de cette façon, vous n’avez pas besoin d’enregistrer une classe, une plume, etc.
Ceci est ma cellule personnalisée.
import UIKit class TestCell: UITableViewCell { .____. @IBOutlet var titleImageView: UIImageView! @IBOutlet var titleLabel: UILabel! écrasez init (style: UITableViewCellStyle, reuseIdentifier: String!) { super.init (style: style, reuseIdentifier: reuseIdentifier) } remplacez func awakeFromNib () { super.awakeFromNib () // Code d'initialisation } requis init (codeur aDecoder: NSCoder) { super.init (codeur: aDecoder) } }
Selon vous, ou où que vous soyez, vous étendez "UITableViewDataSource" . Assurez-vous que "cell2" est identique à "Identifier" que vous lui avez donné via le storyboard.
func tableView (tableView: UITableView !, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! { var cell: TestCell = tableView.dequeueReusableCellWithIdentifier ("cell2", forIndexPath: indexPath) en tant que TestCell // Exemple d'utilisation des éléments personnalisés . cell.titleLabel.text = self.items [indexPath.row] var topImage = UIImage (nommé: "fv.png") cell.titleImageView.image = topImage cellule de retour }
Si vous n'utilisez pas Storyboard, créez un nouveau fichier en tant que sous-classe de UITableViewCell, cochez la case "Créer également des fichiers xib" après avoir défini votre cellule personnalisée. Voici le code pour tableview
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!
}
Essayez ce code suivant:
var cell = tableView.dequeueReusableCell(withIdentifier: "CustomCellTableView") as? CustomCellTableView
Vérifiez votre panneau de récit et sélectionnez la cellule, puis consultez l'inspecteur d'identité en sélectionnant le type de votre classe, votre classe CustomClass et le type de module, le nom de votre projet.
Je l'ai fait Cela fonctionne parfaitement essayez cette astuce pour éviter les erreurs de voir ci-dessous l'image et le code
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
}