我是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类更新它时,单元格不会更新。
答案 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。