Hello在我的TableViewController
我需要前三个静态单元格,然后是动态单元格。我已经做了一些研究,并提出我可以在动态表原型中做静态单元格,但反之亦然。
所以我拖动一个tableViewController并选择动态原型并添加了4个原型单元格(3个静态单元格和1个动态单元格),并为它们中的每个四个提供不同的标识符,并将类TableViewCell添加到其中所有四个。我也创建了一个TableViewCell类。
现在我收到此错误
fatal error: unexpectedly found nil while unwrapping an Optional value
这是我的代码
let NUMBER_OF_STATIC_CELLS = 3
var labels = ["label1","label2","label3"]
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return labels.count + 1
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell: TestViewCell!
print(indexPath.row)
if (indexPath.row == 0) {
cell = tableView.dequeueReusableCellWithIdentifier("static1", forIndexPath: indexPath) as! TestViewCell
}
if (indexPath.row == 1) {
cell = tableView.dequeueReusableCellWithIdentifier("static2", forIndexPath: indexPath) as! TestViewCell
//cell.cardSetName?.text = self.cardSetObject["name"] as String
}
if (indexPath.row == 2) {
cell = tableView.dequeueReusableCellWithIdentifier("static2", forIndexPath: indexPath) as! TestViewCell
//cell.cardSetName?.text = self.cardSetObject["name"] as String
}
cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! TestViewCell
cell.testLabel.text = "row \(indexPath.row)" // return test rows as set in numberOfRowsInSection
return cell; //getting error here
}
更新
好的错误已被删除。现在我提出了另一个问题。我想知道总共有4行。 3是静态的,然后其余的将是动态的。然后是什么总行数。我这样做
labels.count+2 //2 static cells(0 1 2 )
但是我得到致命的错误:数组索引超出范围
答案 0 :(得分:0)
如果行为4或更多,则没有代码可以返回单元格。改变这个:
if (indexPath.row == 3) {
到此:
if (indexPath.row >= 3) {
或者只是将其更改为:
else {
答案 1 :(得分:0)
上面的代码有一些错误:
indexPath.row == 2
时应该是"静态3"。
放置定义" cell"的代码的最后一行。在else语句中,阻止它始终执行。当你这样做,它应该工作。 像这样:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell: TestViewCell!
if (indexPath.row == 0) {
cell = tableView.dequeueReusableCellWithIdentifier("static1", forIndexPath: indexPath) as! TestViewCell
}
if (indexPath.row == 1) {
cell = tableView.dequeueReusableCellWithIdentifier("static2", forIndexPath: indexPath) as! TestViewCell
}
if (indexPath.row == 2) {
cell = tableView.dequeueReusableCellWithIdentifier("static3", forIndexPath: indexPath) as! TestViewCell
}
else{
cell = tableView.dequeueReusableCellWithIdentifier("dynamic\(indexPath.row-2)", forIndexPath: indexPath) as! TestViewCell
}
cell.testLabel.text = "row \(indexPath.row)"
return cell
}