我是新來iOS開發,我想創建自定義tableViewCells,但我有一個問題。我有3個部分爲我的tableViewCell和一個數組。當我嘗試將值分配給UITableView, cellForRowAt
的單元格時,它從每個部分的頂部開始數組。 這裏是我的代碼:自定義tableViewCell
import Foundation
import UIKit
struct cellData {
let cell : Int!
let text : String!
}
class SettingsTableViewCell : UITableViewController{
var arrayOfCellData = [cellData]()
override func viewDidLoad() {
arrayOfCellData = [cellData(cell : 1, text : "تغییر رنگ دکمه تنظیمات"),
cellData(cell : 2, text : "تغییر تصویر پشت زمینه"),
cellData(cell : 1, text : "تغییر رنگ قلم"),
cellData(cell : 2, text : "اعلانات"),
cellData(cell : 2, text : "صداها"),
cellData(cell : 2, text : "زبان"),
cellData(cell : 2, text : "بازگشت به حالت پیش فرض"),
cellData(cell : 2, text : "سوالات متداول")]
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 3
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0{
return 3
}
else if section == 1{
return 4
}
else if section == 2{
return 1
}
return arrayOfCellData.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if arrayOfCellData[indexPath.row].cell == 1{
let cell = Bundle.main.loadNibNamed("TableViewCell_Type1", owner: self, options: nil)?.first as! TableViewCell_Type1
cell.cellName_1.text = arrayOfCellData[indexPath.row].text
return cell
}
else if arrayOfCellData[indexPath.row].cell == 2{
let cell = Bundle.main.loadNibNamed("TableViewCell_Type2", owner: self, options: nil)?.first as! TableViewCell_Type2
cell.cellName_2.text = arrayOfCellData[indexPath.row].text
return cell
}
else{
let cell = Bundle.main.loadNibNamed("TableViewCell_Type1", owner: self, options: nil)?.first as! TableViewCell_Type1
cell.cellName_1.text = arrayOfCellData[indexPath.row].text
return cell
}
}
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if section == 0{
return "تنظیمات رنگ\n"
}
else if section == 1{
return "تنظیمات سیستم\n"
}
else if section == 2{
return "پشتیبانی\n"
}
return ""
}
}
不要使用像「Bundle.main.loadNibNamed」這樣的舊編碼方式,而應使用「registerNib」來幫助您創建單元格。另外,你可以發佈你的問題的屏幕截圖嗎? – Satyam
在'cellForRowAtIndexPath'中,您只考慮索引路徑的行。因此,每個部分顯示數組頂部的相同對象。此外,你可以在Interface Builder中設計多個自定義單元格(我猜是自Xcode 6以來),不需要額外的筆尖。最後不要硬編碼'numberOfRows'。用嵌套數組或其他東西創建一個合適的模型,以便始終使用'count'屬性。 – vadian
您不能只考慮'indexPath.row',根據'indexPath.section'和'indexPath.row'計算數組索引。然後你會從數組中得到確切的元素。 –