2011-10-04 57 views

回答

1

您需要再做一点才能在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:(这是假定所有事情都是在一个单独的部分完成的,如果你需要把它分成多个部分,我们也可以进入这个部分)。

0

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

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

0

取决于正是你正打算在这里做你能不能不要拨打电话,以实现代码如下之前执行条件测试:的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的数据源。

0

您应该检查Cell的数据源设置时的条件:)

并使用条件过滤数据。