Я использую tableview. Иногда мои данные получают ошибку, потому что это пустые данные. Когда я получаю пустые данные, я хочу вернуть 1 или более ячеек и показать пустые информационные данные, такие как «Нет данных!».Swift: Как я могу заполнить ячейку, когда данные пустые?
Код:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var a:Int = 0
if segmentControl.selectedIndex == 0 {
a = 8
return a
}else if segmentControl.selectedIndex == 1{
a = 4
return a
}else if segmentControl.selectedIndex == 2{
a = 2
return a
}else if segmentControl.selectedIndex == 3{
a = 1
return a
}
return a
}
После затем 0, все Datas пусты. Я пытаюсь вернуть клетку, и я использую этот код в cellForRowAtIndexPath
:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("knockoutsCell", forIndexPath: indexPath) as! KnockoutsTableViewCell
let item = knockoutsTableArray[indexPath.row]
if knockoutsTableArray.count == 0{
cell.dateLabel.text = "Date"
cell.homeImage.image = UIImage(named: "imagePic.png")
cell.homeLabel.text = "Empty data!"
}else{
if item.playing == true{
cell.dateLabel.text = item.date
cell.homeImage.image = UIImage(named: "\(item.homeName)")
}
}
return cell
}
Я нашел решение и сделал это благодаря Sethmr. Вот мой рабочий код:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if knockoutsTableArray.count != 0 {
return knockoutsTableArray.count
} else{
if segmentControl.selectedIndex == 0{
return 8
}else if segmentControl.selectedIndex == 1{
return 4
}else if segmentControl.selectedIndex == 2{
return 2
}else{
return 1
}
}
}
Также я переехал значение item
в cellForRowAtIndexPath
сверху и он работал. Я назвал элемент, когда он не пуст.
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("knockoutsCell", forIndexPath: indexPath) as! KnockoutsTableViewCell
if knockoutsTableArray.count == 0{
cell.dateLabel.text = "Date"
cell.homeImage.image = UIImage(named: "imagePic.png")
cell.homeLabel.text = "Empty data!"
}else{
let item = knockoutsTableArray[indexPath.row]
if item.playing == true{
cell.dateLabel.text = item.date
cell.homeImage.image = UIImage(named: "\(item.homeName)")
}
}
return cell
}
Не можете понять, где именно ваша проблема? – Volodymyr
Когда число моих данных равно нулю, я пытаюсь вернуть номер вручную для ячейки и вернуть данные, подобные приведенному выше кода. Но это не работает. Наверное, я не могу так. – winnervswinner
Я не вижу код, в котором вы пытаетесь вернуть номер вручную для ячейки. Я вижу только проверку того, являются ли данные пустым массивом, чем вы заполняете его пустым содержимым данных. – Volodymyr