在TableView中有select地加载单元格

我需要返回单元格tableView:cellForRowAtIndexPath:只有当某些条件为真,例如:

if (condition == true) return nil; else return cell; 

返回零给我一个错误。

你需要做一些更多的有条件地在UITableView中有一个单元格。

假设你有3个单元格,第一个是有条件的。 你需要做的第一件事就是根据这个条件使你的表格有2或3个单元格:

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if(condition) { return 3; } else { return 2; } } 

接下来你可以返回实际的单元格。

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if(condition) { if(indexPath.row == 0) { //create and return conditional cell } else { //create and return normal cell } } else { //create and return normal cell } } 

瞧!

PS:(这是假设一切都在一个单独的部分完成,如果你需要把它分成多个部分,我们也可以进入这个部分)。

这是因为你的UITableView不能有空格,这是不允许的,你至less必须返回一个空单元格。 你想做什么?

TableView尝试检索下一个单元格并获取nil时,会出现错误,无论如何,它必须获取下一个单元格。

具体取决于你打算在这里做什么,你可以在调用tableview之前不要执行条件testing:cellForRowAtIndexPath:

例如

 if( someCondition ) { [self.tableview cellForRowAtIndexPath:indexPath] } 

或者,如果你的出来是只显示满足一定条件的表格单元格,我build议你创build一个函数,将这些元素从你的tableview数据复制到一个NSArray,你将用来显示所需/条件表格数据。

IE

 -(void)composeVisibleTableData { [m_visibleTableData removeAllObjects]; for( NSObject* dataObject in m_tableDataArray ) { if( someCondition )//dataObject meetsCondition { m_visibleTableData addObject:dataObject]; } } } 

然后在你的UITableDelegate函数中为numberOfRowsInSection:和tableview:cellForRowAtIndexPath:引用m_visibleTableData作为UITableView数据源。

你应该检查细胞的数据源设置时的条件:)

并使用条件过滤数据。