Заполнить TableViewController
Я новичок в Swift, и у меня нет опыта кодирования в Objective C. Проблема, с которой я сталкиваюсь, заключается в том, что, когда я заполняю данные из объекта класса в ячейки табличного представления, все ячейки показывают те же данные (последний объект массива, к которому недавно обращались)). Может ли кто-нибудь помочь мне с этим? Благодарю.
class TableViewController: UITableViewController{
var urgentCenters:Array<UrgentCenterDetails> = []
override func viewDidLoad() {
super.viewDidLoad()
self.loadInfo()
println("Number of entries: \(self.urgentCenters.count)")
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func numberOfSectionsInTableView(tableView: UITableView!) -> Int {
return 1;
}
override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
//println("Number of rows \(urgentCenters.count)")
return self.urgentCenters.count
}
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let cellId = "cell"
var cell = tableView.dequeueReusableCellWithIdentifier(cellId) as? UITableViewCell
if nil==cell {
cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: cellId)
}
if let ip = indexPath{
cell!.textLabel.text = urgentCenters[indexPath.row].title
}
return cell
}
func loadInfo(){
// Append data to urgentCenters data
var center = UrgentCenterDetails()
var title:String
title = "Penn's Landing"
center.setCenterDetails(title)
urgentCenters.append(center)
title = "Liberty Bell"
center.setCenterDetails(title)
urgentCenters.append(center)
}
}
1 ответ
Ваша проблема в том, что вы создаете только один UrgentCenterDetails
объект и добавление его в массив несколько раз. Поскольку существует только один объект, при изменении его свойств вы воздействуете на все элементы массива (поскольку это один и тот же объект во всех элементах).
У тебя должно быть -
func loadInfo(){
// Append data to urgentCenters data
var title:String
title = "Penn's Landing"
center.setCenterDetails(title)
urgentCenters.append(center)
center = UrgentCenterDetails()
title = "Liberty Bell"
center.setCenterDetails(title)
urgentCenters.append(center)
}