2015-07-12 74 views
2

我试图解决的问题是为已加载的任务返回多个单元格,因为我无法在未加载全新任务的情况下进行迭代。在TableView中返回多个dequeueReusableCells Swift

每个视图都有一个或多个应该为特定任务加载的单元格,而且我似乎无法解决问题。感谢您的帮助!

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let categoryCells = self.tasks[indexPath.row] as? Task 
    var cellChooser: BoredTaskCell! 

    if selectedTaskCategory == "Movie"{ 
    let cell = tableView.dequeueReusableCellWithIdentifier("imdbCell") as! BoredTaskCell! 
     cell!.selectionStyle = UITableViewCellSelectionStyle.None 
     cellChooser = cell 
    } 
    else if selectedTaskCategory == "Lifestyle" { 
     let emailCell = tableView.dequeueReusableCellWithIdentifier("emailCreatorCell") as! BoredTaskCell! 
     emailCell!.selectionStyle = UITableViewCellSelectionStyle.None 
     cellChooser = emailCell 

    } 
    else { 
     let emptyCell = tableView.dequeueReusableCellWithIdentifier("messageCell") as! BoredTaskCell! 
     cellChooser = emptyCell 
     emptyCell!.selectionStyle = UITableViewCellSelectionStyle.None 
    } 

    return cellChooser 
} 
+0

你在哪里设置了'selectedTaskCategory'?它是全局变量吗? –

+0

是的,这是全球性的! – LucasGron

+0

然后,在分配新值后,您只需重新加载tableView以显示更新的单元格。 –

回答

3

简短的回答是,你不能从一次调用返回两个单元格到cellForRowAtIndexPath。但是为了实现你想要的,改变你构造tableView的方式,所以每个任务都有一个部分,而不是每个任务的一个单元。即使用indexPath.section作为阵列的索引。您将需要修改所有表格视图数据源方法(例如,所以numberOfSectionsInTableView将返回self.tasks.count)。技巧来自numberOfRowsInSection,通常应该返回1,但对于需要两个单元的任务,它应该返回2.然后在cellForRowAtIndexPath中,确定使用indexPath.section显示哪个任务。然后,如果indexPath.row为0,则使用一种单元格类型(例如imdbcell),如果它是1,则使用其他单元格类型(例如消息单元格)。

相关问题