UILabel未使用UITableViewCell自定义类Swift更新

时间:2016-06-15 16:39:26

标签: ios swift uitableview uilabel

我是Swift编程的新手,所以不要评判我的强势。我花了很多时间试图了解问题所在,但我无法理解。

我在UIViewController中有一个UITableView

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

在我的自定义UITableViewCell类中,我有myLabel - 我在故事板中附加的标签。

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

但是,当我的单元格更新时,如果我将以下行cell.textLabel!.text = "12312"添加到cellForRowAtIndexPath,则当我尝试通过自定义UITableViewCell类更新它时,单元格不会更新。

3 个答案:

答案 0 :(得分:2)

我认为你应该这样做:

1)创建自定义单元格

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

2)为可重用单元格和cellForRowAtIndexPath

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

答案 1 :(得分:0)

如果要更新单元格中的数据,则必须重新加载tablewView。 如果您的数据源阵列已更新,并且您想要在tableview中填充更新的数据,那么只需重新加载视图。

    @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() 

}

答案 2 :(得分:0)

我发现了问题所在。实际上我的UITableView位于tabBarController里面的UIViewController里面。这就是Xcode 7.3.1中没有在运行时应用约束的原因。

我通过将安装复选框设置为true来修复所有约束和单元格中的UILabel。