我需要在返回的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的數據源設置時的條件:)
並使用條件過濾數據。