我使用croll视图,并且在一个视图中有两个(或许多)tableView 像这样
但是在功能:
a[class="rrc_pic"]
这是一个错误
但我做了
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
错误是如何发生的?
return cell
}
答案 0 :(得分:2)
tableView != self.tableView
和tableView != tableView2
时,您什么都不返回。这就是你看到这个错误的原因。如果您确定无法达到此目的,请尝试删除else if
条件
答案 1 :(得分:0)
您的唯一回报嵌套在IF语句中。因此,如果不满意,则不会返回任何内容。
答案 2 :(得分:0)
出现错误是因为当你的" if"声明和你的"否则如果"声明未得到履行。如果"你必须改变你的"否则陈述只是"否则"声明或返回错误发生的行中的单元格。
答案 3 :(得分:0)
您需要返回if
,else if
也是false
。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if(tableView == self.tableView) {
//returning cell correctly
} else if tableView == tableView2 {
//returning cell correctly
}
//you need to return something here too
}
答案 4 :(得分:0)
你的整个方法有这样的结构:
if tableView == self.tableView {
// blah blah blah
return some stuff
} else if tableView == tableView2 {
// blah blah blah
return some stuff
}
那么如果tableView
既不是self.tableView
也不是tableView2
怎么办?如果它是其他一些tableView怎么办?代码不会返回任何内容!
由于声明该方法返回UITableViewCell
,因此不得返回任何内容。这就是错误出现的原因。
“但是tableView
只能是那两个价值观!我保证!”你喊道。
但swift编译器并不知道你答应了。
如果你确实确定,你可以在if语句之外的方法末尾写fatalError("tableView is some other value")
。
此解决方案的优点是,它可以通过崩溃应用程序提醒您忘记在方法中添加else if
子句。
如果您完全确定不会添加其他表格视图,则只需将else if
更改为简单的else
。
答案 5 :(得分:0)
是的,大多数情况下这也发生在我身上。
所以,这就是你所做的。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if(tableView == self.tableView) {
let cell: DetailTableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell") as! DetailTableViewCell
//Some code for cell
return cell
}
else if tableView == tableView2 {
let cell: MaterialDetailTableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell2") as! MaterialDetailTableViewCell
//Some code for cell
return cell
}
//--> Compiler Says: What should I do if both are false. I need to return cell anyways. Please guide me.!!!!
//--> Solution : Return Cell from here as well
}
答案 6 :(得分:0)
我建议不要删除else if
条件,而是添加一个else
条件,其中包含断言以提醒您或某人更改该代码有关此意外行为似乎是更好的选择。
如果有人添加了新的表格视图,则需要更新此代码并删除else if
将隐藏该事实。
if tableView == self.tableView {
// ...
} else if tableView == tableView2 {
// ...
} else {
fatalError(" Unexpected behaviour: only 2 tables are supported")
// Or any other assertion...
}
答案 7 :(得分:0)
返回else
中的tableviewcell
return UITableViewCell()
答案 8 :(得分:0)
尝试一下:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = UITableViewCell()
switch tableView {
case yourTableView1:
cell = tableView.dequeueReusableCell(withIdentifier: "yourTV1Cell", for: indexPath)
cell.textLabel?.text = //your text here
case yourTableView2:
cell = tableView.dequeueReusableCell(withIdentifier: "yourTV2Cell", for: indexPath)
cell.textLabel?.text = //your text here
default:
print("...what else") //...or write your default case here
}
return cell
}