2012-10-11 69 views
0

我有一個UITableView,我想在視圖控制器的viewDidLoad中修改它。 但UITableView不查詢它的dataSource在viewDidLoad中,所以我先調用reloadData,然後用beginUpdates和endUpdates修改它的單元格。 (在我的情況下,我只是刪除了一些單元格)。 但當endUpdates被稱爲它拋出異常:UITableView endUpdates在viewDidLoad中調用時崩潰

[__NSArrayM insertObject:atIndex:]:索引1超出界限爲空數組。

這個例外是什麼意思? 我知道我將正確的數字返回給UITableView,因爲如果我在viewDidAppear之後調用它,它完美地工作,它只是在viewDidLoad中不起作用。

編輯:

這裏是我的代碼

for (int i = 0; i < [customDataSource numberOfSectionsInTableView]; i ++) { 
    NSInteger n = [customDataSource tableView:self numberOfRowsInSection:section]; 
    NSMutableArray* array = [[NSMutableArray alloc] initWithCapacity:n]; 
    for (NSInteger i = 0; i < n; i++) 
     [array addObject:[NSIndexPath indexPathForRow:i inSection:section]]; 
    [super beginUpdates]; 
    [super deleteRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationNone]; 
    [super endUpdates]; 
} 

當我提出這個代碼viewDidAppear到viewDidLoad中或viewWillAppear中它會崩潰。

+0

您是在調用開始/結束更新之前還是之後設置陣列? –

+0

我在applicationDidFinishedLaunchingWithOptions中設置了我的數組:我的appDelegate當然是在調用viewDidLoad之前創建的。 – Ocelot

+0

請修改您的帖子以顯示您的viewDidLoad。 –

回答

-1

看起來您正試圖將索引1處的對象插入到空數組中。如果數組爲空,那麼插入的唯一可接受的索引是0.檢查如何計算索引值。