2016-09-26 1 views
0

Ich habe eine benutzerdefinierte UITableViewCell mit einem Label auf der linken Seite und einem Textfeld auf der rechten Seite erstellt. Auf dem Tisch erscheint jedoch das Etikett, aber das Textfeld nicht. Warum passiert das und wie kann ich das beheben?Benutzerdefiniert UITableViewCell zeigt kein Textfeld an

class TableViewCell: UITableViewCell { 
    var cellLabel: UILabel! 
    var textField: UITextField! 

    let tableViewController:TableViewController = TableViewController() 

    init(frame: CGRect, title: String) { 
    super.init(style: UITableViewCellStyle.Default, reuseIdentifier: "cell") 

     cellLabel = UILabel(frame: CGRectMake(0, 0, 100, 40)) 

     let cellTextField = UITextField(frame: CGRectMake(bounds.width*0.2, 100, bounds.width*0.75, 50)) 
     cellTextField.delegate = tableViewController 

     self.addSubview(cellLabel) 
     self.addSubview(cellTextField) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) { 
     super.init(style: style, reuseIdentifier: reuseIdentifier) 
    } 

} 

class TableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate { 
    var tableView: UITableView = UITableView() 
    let cellLabels : [String] = ["ID","Number of Times Infected"] 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ 
     var cell = TableViewCell(frame: CGRectMake(0, 0, self.view.frame.width, 50), title: cellLabels[indexPath.row]) 
     cell.cellLabel!.text = cellLabels [indexPath.row] 
     return cell; 
    } 
} 
+2

Was ist die Höhe Sie Zelle? Sie setzen UITextField Herkunft.Y auf 100, vielleicht ist es nicht sichtbar – ronan

+0

set bg Farbe für das Textfeld und überprüfen. –

+0

überprüfen Sie Ihre Schnittstelle Builder, möglicherweise nicht "conntected" Ihre benutzerdefinierte Zelle –

Antwort

3
//TableViewCell Class 
class TableViewCell: UITableViewCell { 

    var cellLabel: UILabel! 
    var textField: UITextField! 

    let tableViewController:ViewController = ViewController() 

    init(frame: CGRect, title: String) { 
     super.init(style: UITableViewCellStyle.Default, reuseIdentifier: "cell") 

     cellLabel = UILabel(frame: CGRectMake(0, 0, bounds.width/2, 40)) 

     let cellTextField = UITextField(frame: CGRectMake(cellLabel.frame.size.width+5, 0, bounds.width*0.75, 50)) 

     cellTextField.placeholder = "Enter Your Text here" 
     cellTextField.delegate = tableViewController 

     self.addSubview(cellLabel) 
     self.addSubview(cellTextField) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) { 
     super.init(style: style, reuseIdentifier: reuseIdentifier) 
    } 
//View Controller Class 
class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate,UITextFieldDelegate 
{ 
    var tableView: UITableView = UITableView() 
    let cellLabels : [String] = ["ID","Number of Times Infected"] 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    { 
     return cellLabels.count 
    } 
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ 
     let cell = TableViewCell(frame: CGRectMake(0, 0, self.view.frame.width, 50), title: cellLabels[indexPath.row]) 
     cell.cellLabel!.text = cellLabels [indexPath.row] 
     return cell; 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 


} 

Hinweis: Set-Rahmen wie pro Ihre Anforderungen.

Ausgang:

ScreenShot

+0

Danke! Ich habe die Dimensionen verwendet, die Sie für den Rahmen von cellLabel und cellTextField angegeben haben, und es hat funktioniert! – 14wml