2011-10-04 27 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的數據源設置時的條件:)

並使用條件過濾數據。