2016-06-15 14 views
3

Ich bin sehr neu in Swift Programmierung, so verurteile mich nicht stark. Ich habe viel Zeit damit verbracht zu verstehen, wo das Problem liegt, aber ich verstehe es nicht.UILabel ist nicht aktualisiert mit UITableViewCell benutzerdefinierte Klasse Swift

Ich habe eine UITableView innerhalb eines UIViewController

UIViewController:

@IBOutlet weak var myTableView: UITableView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    myTableView.delegate = self 
    myTableView.dataSource = self 
} 



func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    // #warning Incomplete implementation, return the number of sections 
    return 1 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    // #warning Incomplete implementation, return the number of rows 
    return 10 
} 


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

    cell.createNewCell() 
    return cell 
} 

In meiner benutzerdefinierten UITableViewCell Klasse Ich habe myLabel - Label, das ich in Storyboard angebracht habe.

@IBOutlet weak var myLabel: UILabel! 
    func createNewCell(){ 
     myLabel.text = "1234567" 
    } 

Aber wenn ich die folgende Zeile cell.textLabel!.text = "12312"-cellForRowAtIndexPath hinzufügen, wenn meine Zellen zu aktualisieren, wird die Zelle nicht aktualisieren, wenn ich sie durch die benutzerdefinierte UITableViewCell Klasse zu aktualisieren versuche.

+0

Ich habe Ihre Frage bearbeitet, immer noch ist unklar, was Sie fragen. Ihre letzten 2 Sätze sind nicht klar – Honey

Antwort

0

Sie müssen die TablewView neu laden, wenn Sie die Daten in Zelle aktualisieren. Wenn Ihr Datenquellenarray aktualisiert ist und Sie aktualisierte Daten in der Tabellenansicht auffüllen möchten, laden Sie einfach relatabletableview.

@IBOutlet weak var myTableView: UITableView! 
    var dataSource= [String]() 
    override func viewDidLoad() { 
     super.viewDidLoad() 
    myTableView.delegate = self 
    myTableView.dataSource = self 
    dataSource = ["item1", "item2", "item3"] 
    } 

    func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    // #warning Incomplete implementation, return the number of sections 
    return 1 
    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    // #warning Incomplete implementation, return the number of rows 
    return dataSource.count 
    } 


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

     cell.myLabel.text = dataSource[indexPath.row] 
     return cell 
    } 
    //Suppose in some function you changed the datasource 
    func updateData() { 
     dataSource = ["number1", "number2", "number3"] 
    //Now just call 
    myTableView.reloadData() 

} 
+0

Nein, das Problem ist, dass die ersten Daten nicht angezeigt wird, muss ich nicht reloadData() um die ursprünglichen Daten anzuzeigen – Danny

2

Ich glaube, Sie auf diese Weise tun sollten:

1) Erstellen Sie Ihre individuelle Zelle

class customCell: UITableViewCell 
{ 
    @IBOutlet weak var myLabel: UILabel! 
} 

2) Stellen Sie eine Kennung für wiederverwendbare Zelle und in cellForRowAtIndexPath

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{ 
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! customCell 
    cell.myLabel.text = "1234" 
    return cell 
+0

Nein, wie Sie MyTableViewCell sehen, wurde bereits so erstellt – Danny

0

Ich habe herausgefunden, wo das Problem lag. Eigentlich war mein UITableView innerhalb von UIViewController, der innerhalb von TabBarController war. Aus diesem Grund wurden in Xcode 7.3.1 keine Einschränkungen für die Laufzeit angewendet.

Ich habe es mit der Einstellung installiert Checkbox auf True für alle Einschränkungen und UILabel in der Zelle.

Verwandte Themen