2016-06-15 16 views
3

Swiftプログラミングではとても新しいので、私を強く判断しないでください。私は問題がどこにあるのか理解しようと多くの時間を費やしましたが、それを得ることはできません。UILabelはUITableViewCellカスタムクラスSwiftで更新されていません

私はのUIViewController

のUIViewController内のUITableViewを持っている:私はmyLabel持っている私のカスタムUITableViewCellのクラスで

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

- 私はストーリーボードに添付したラベルを。

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

しかし、私はcellForRowAtIndexPathに次の行cell.textLabel!.text = "12312"を追加した場合、私は、カスタムUITableViewCellのクラスを介してそれらを更新しようとしていたときに私の細胞の更新は、セルが更新されません。

+0

私はあなたの質問を編集しましたが、依然としてあなたが求めているものは不明です。あなたの最後の2つの文は明確ではありません – Honey

答えて

0

セル内のデータを更新する場合は、tablewViewをリロードする必要があります。 データソース配列が更新され、更新されたデータをtableviewに読み込みたい場合は、reloadtableviewを使用します。

@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

いいえ、問題は初期データが表示されていないことです、私は初期データを表示するために再ロードする必要はありません( – Danny

2

は、私はあなたがこの方法でやるべきだと思う:カスタムセル)

1を作成し

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

2)

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

)MyTableViewCellが既に作成されている – Danny

0

再利用可能なセルのためとcellForRowAtIndexPath内の識別子を設定します。私は問題がどこにあるかを見つけました。実際に私のUITableViewは、tabBarControllerの内部にあったUIViewControllerの内部にありました。そのため、Xcode 7.3.1では実行時に制約が適用されませんでした。

のチェックボックスをすべての制約とセル内のUILabelに対してtrueに設定しました。