我想在单个viewcontroller中使用两个tableview。但最终的返回类型是什么?
这是我的代码
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if(tableView == self.tableaudiodata){
let cell:customcell = tableView.dequeueReusableCellWithIdentifier("customcell") as! customcell
cell.audiolabel.text = recordings[indexPath.row].lastPathComponent
return cell
}
if(tableView == self.tablehome){
let cell:homecell = tableView.dequeueReusableCellWithIdentifier("homecell") as! homecell
let dic = arrayofhomedata.objectAtIndex(indexPath.row)
cell.homelbl.text = dic["key"] as! NSString as String
print(arrayofhomedata.valueForKey("value"))
return cell
}
What should be return here???}
答案 0 :(得分:1)
您最好使用“tag”属性来指定从委托调用哪个tableView。使用以下命令在Xcode或代码中设置“tag”属性:
tableview.tag = 1
tableviewDetail.tag = 2
当您“重新加载”数据时,委托要求返回所选tableView的单元格的方法。
例如:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if tableView.tag = 1 {
//return your main Cell
} else {
//return the other cell (dont use "2" here, because the delegate always needs to return a cell)
}
答案 1 :(得分:0)
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if(tableView == self.tableaudiodata){
let cell:customcell = tableView.dequeueReusableCellWithIdentifier("customcell") as! customcell
cell.audiolabel.text = recordings[indexPath.row].lastPathComponent
return cell
}
else if(tableView == self.tablehome){
let cell:homecell = tableView.dequeueReusableCellWithIdentifier("homecell") as! homecell
let dic = arrayofhomedata.objectAtIndex(indexPath.row)
cell.homelbl.text = dic["key"] as! NSString as String
print(arrayofhomedata.valueForKey("value"))
return cell
}
}
答案 2 :(得分:0)
你应该为每个tableview使用不同的数据源(也许是委托?),从长远来看,这将使事情变得更加简单。
tableview1.datasource = MyNewDataSource()
tableview2.datasource = MyOtherDataSource()