我需要在返回的tableView细胞:的cellForRowAtIndexPath:只有当某些条件为真,例如:称重传感器选择性的TableView
if (condition == true)
return nil;
else
return cell;
返回nil给我一个错误。
我需要在返回的tableView细胞:的cellForRowAtIndexPath:只有当某些条件为真,例如:称重传感器选择性的TableView
if (condition == true)
return nil;
else
return cell;
返回nil给我一个错误。
您需要再做一点才能在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
中不能有空格,这是不允许的,你必须至少返回一个空单元格。你想做什么?
当TableView
尝试检索下一个单元格并获取nil时出现错误,无论如何它必须获取下一个单元格。
取决于正是你正打算在这里做你能不能不要拨打电话,以实现代码如下之前执行条件测试:的cellForRowAtIndexPath:
EG
if(someCondition)
{
[self.tableview cellForRowAtIndexPath:indexPath]
}
或者,如果你出落得是只显示满足特定条件的表格单元格,我建议您创建一个函数,将这些元素从您的tableview数据复制到您将用于显示所需/条件表格数据的NSArray中。
IE
-(void)composeVisibleTableData
{
[m_visibleTableData removeAllObjects];
for(NSObject* dataObject in m_tableDataArray)
{
if(someCondition)//dataObject meetsCondition
{
m_visibleTableData addObject:dataObject];
}
}
}
然后在numberOfRowsInSection您UITableDelegate功能:和的tableview:的cellForRowAtIndexPath:参考m_visibleTableData作为UITableView的数据源。
您应该检查Cell的数据源设置时的条件:)
并使用条件过滤数据。