2012-09-22 139 views
2

如何以編程方式在分組部分中添加或刪除單元格?如何添加/刪除組合部分uitableview中的單元格?

我使用故事板中的靜態單元格創建了一個分組tableview。在故事板內部,我使用屬性檢查器面板設置行數。例如,對於第1節,我定義了3行。然後使用3個項目的NSMutableArray,我可以在啓動時正確地將值加載到每個部分。

我最終希望能夠在運行時添加/刪除單元格。該部分尚未編碼,但爲了模擬添加新的單元格場景,我在代碼中向數組添加了一個新項目,但沒有增加Attribute Inspector面板中該部分的行數。由於在numberOfRowsInSection方法中,我希望不需要做任何其他更改以適應新項目,因此我將返回特定部分的數組計數。

這是錯誤信息,我得到的,當我重新運行該代碼:

*終止應用程序由於未捕獲的異常 'NSRangeException',原因是:「* - [__ NSArrayI objectAtIndex:]:指數3越界[0 .. 2]'

顯然我需要以某種方式指定一個額外的行數。任何人都可以闡明我如何在運行時做到這一點?謝謝。

+0

請分享您的代碼... – 2012-09-22 09:16:28

+0

請添加'numberOfRowsInSection'方法的代碼 –

回答

1

你不應該通過屬性檢查器。它禁止你動態插入和刪除單元格。 嘗試

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
    return [yourArray count]; 
} 

否則會這樣做。

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
    if(section==0){ 
     return 3; 
    }else if(section==1){ 
     return 4; 
    } 
return 0; 
} 

等不同的部分如果u有許多節.. 您可以重新加載整個表,當你從陣列讀取數據更新..

[tableView reloadData]; 

,但更好的方法要做到這一點就是在塊中插入像這樣的行或多行。

[tableView beginUpdates]; 
[tableView insertRowsAtIndexPaths:yourIndexPath withRowAnimation:UITableViewRowAnimationRight]; 
[tableView endUpdates]; 

您還可以添加動畫以從右側或右側或頂部或底部添加單元格。

我希望這可以幫助你! 乾杯!

+0

我一次測試一件。現在一切都是硬編碼的。你說我不應該在Attribute Inspector中指定行計數,但是如果我不這樣做,我似乎無法繞過錯誤消息。這是我的問題的癥結所在。我認爲通過返回numberOfRowsInSection方法中的[myArray count]將處理添加/刪除單元格問題,但它不起作用。我似乎陷入了22級。我需要首先在屬性檢查器中指定行計數,但後來在運行時,當我想修改rowcount時,我得到錯誤。 – sftoparis

0

我想你是硬編碼你的部分的行數。因爲看錯誤似乎是你的部分期待4對象,但您的數據源中只包含3

裏面你:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

你應該返回類似[myArray的數],因此添加或delting如果向數組中添加或刪除對象,行應該不成問題。

0

你在UITableview中有預定義的方法來插入和刪除行,對於插入我們可以使用insertRowAtIndexPath方法和刪除使用deleteRowAtIndexPath方法。

相關問題