2012-06-07 49 views
0

我正在實現一個TableView(類ListeExercice),顯示自定義單元格的列表。這些單元格在另一個類(類ExerciceTableCell)中定義。TableView索引和NSArray對象之間的衝突Atldex

在類ListeExercice,我創建一個NSArray作爲跟隨在viewDidLoad方法:

table1 = [NSArray arrayWithObjects:@"exo1", @"exo2", nil]; 
table2 = [NSArray arrayWithObjects:@"10:00", @"10:00", nil]; 

然後,在相同的類中,我爲了在表中顯示的細胞做的一切

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection(NSInteger)section 
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView 

我得到的問題發生插件下面的方法,基本上在那裏,以顯示正確的單元格的代碼位於:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

static NSString *exerciceTableIdentifier = @"ExerciceTableCell"; 
ExerciceTableCell *cell = (ExerciceTableCell *)[tableView dequeueReusableCellWithIdentifier:exerciceTableIdentifier]; 
if (cell == nil) 
{ 
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ExerciceTableCell" owner:self options:nil]; 
    cell = [nib objectAtIndex:0]; 
} 

//label1 is a label from the cell defined in the ExerciceTableCell class. 

cell.label1.text = [tableIntituleExercice objectAtIndex:indexPath.row]; 

return cell; 

}

的問題是,我得到了這兩條線之間的衝突:

cell = [nib objectAtIndex:0]; 

cell.Label1.text = [table1 objectAtIndex:indexPath.row]; 

顯然還有就是2 「objectAtIndex」 之間的衝突。 我沒有任何警告,只是一個應用程序崩潰,並且一個線程說:「主題1:EXC_BAD_ACCESS什麼我可以做(代碼= 1 ....)

任何意見

+0

你是什麼意思與衝突? –

+0

請發佈完整的錯誤。 – tarmes

+0

通過沖突,我的意思是它接縫編譯器有問題的方法「objectAtIndex」,當我爲它調用兩次不同的對象。例如,我刪除行「cell.Label1.text = [table1 objectAtIndex:indexPath.row];」,一切工作正常,但我沒有填充單元格的標籤。 「線程1:EXC_BAD_ACCESS(代碼= 1,地址0x8)」是完整的錯誤。 – tvincent

回答

1

如果」 。再沒有使用ARC,這是一個普通的內存管理錯誤您必須保留兩個數組中的這些行:

table1 = [NSArray arrayWithObjects:@"exo1", @"exo2", nil]; 
table2 = [NSArray arrayWithObjects:@"10:00", @"10:00", nil]; 

否則,對象將被tableView:cellForRowAtIndexPath:被調用之前發佈它是像這樣的錯誤,那你通常應該使用屬性設置器爲ivars/properties賦值,設置者關心的是正確的內存m爲你服務。

+0

您也必須使用這些屬性:'self.table1 = ...'與'table1 = ...'不一樣。如果你不知道這一點,請再讀一遍。這是Objective-C中最重要的事情之一。 –

+0

感謝您的所有建議!我很感激 – tvincent