it-swarm-eu.dev

UITableView Použití Swift

Moje TapCell1.Swift

Toto je Vlastní 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)
    }
}

Moje ViewController.Swift

Jeho všechny DataSource a delegáti jsou nastaveny správně. Ale Moje vlastní buňka se nezobrazuje.

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.
        }
}

Problém je Vlastní buňka není zobrazena. Navrhněte prosím něco, co jsem udělal špatně.

Poznámka: zde je Můj kód Můj odkaz ke stažení souboru

24
PREMKUMAR

Konečně jsem to udělal.

Pro TapCell1.Swift

import UIKit

class TapCell1: UITableViewCell {

    @IBOutlet var labelTitle: UILabel

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

Pro 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
    }
}

Můj pracovní kód odkaz: CUSTOMIZED TABLE

46
PREMKUMAR

Měli byste zaregistrovat class pro buňku. K tomu Změňte tento řádek kódu na 

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

Upravit

Vy jste kód je v pořádku jsem to zkontroloval 

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

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

Řešení je s největší pravděpodobností určeno pro ruční nastavení výšky buňky:

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

Věřím, že je to chyba Xcode beta 6.

3
Micah

Nyní jsem byl schopen získat vlastní UITableViewCell do práce.

Pracuje dál

  • Běží na Xcode 6 beta 6
  • Běží na Xcode 6 beta 5

  • iOS je 7.1

Jak

  • Vytvořil jsem soubor ".xib" pro buňku.
  • Zkopíruji to do scénáře.
  • Prostřednictvím scénáře mu dávám identifikátor.
  • Ujišťuji se, že je to podřízené dítě stolu

Tímto způsobem nemusíte registrovat třídu/nib atd.

Toto je moje vlastní buňka.

 import UIKit 
 
 třída TestCell: UITableViewCell {
 
 @IBOutlet var titleImageView: UIImageView! 
 @IBOutlet var titleLabel: UILabel 
 
 override init (styl: UITableViewCellStyle, reuseIdentifier: String!) {
 super.init (style: style, reuseIdentifier: reuseIdentifier) ​​
} 
 
 přepsat func awakeFromNib () {
 super.awakeFromNib () 
 // Inicializační kód 
} 
 
 (kodér a kódovač: NSCoder) {[.].

Ve vašem pohledu, nebo kde kdykoli rozšíříte "UITableViewDataSource".

 func tableView (tableView: UITableView !, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
 
 var cell: TestCell = tableView.dequeueReusableCellWithIdentifier ("cell2", forIndexPath: indexPath) jako TestCell 
 
 // Příklad použití vlastních prvků. .____. cell.titleLabel.text = self.items [indexPath.row] 
 
 var topImage = UIImage (pojmenovaný: "fv.png") 
 cell.titleImageView. image = topImage 
 
 návratová buňka 
} 

uitableviewcell

1
thefreshteapot

Zkuste následující kód 

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

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

0
Vijay

Pokud nepoužíváte Storyboard, vytvořte nový soubor jako podtřídu UITableViewCell zaškrtněte políčko "také vytvořit soubory xib" po nastavení vlastní buňky. A zde je kód pro 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!


}
0
guru

Vyzkoušejte následující kód: 

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

Zaškrtněte tabulku Story vyberte buňku a podívejte se na "inspektora identit, ve kterém vyberte typ třídy CLASS, který obsahuje název CustomClass a MODULE. 

Udělal jsem to Funguje to dokonale vyzkoušet tento tip, aby se zabránilo chybě vidět níže obrázek a kód

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