2015-08-27 87 views
0

我有一個UITableView,它有一個NSMutableArray的數據。UITableView在removeObjectAtIndex和reloadData後重新加載不正確

當在數組上調用removeObjectAtIndex,然後在表上調用reloadData時,單元格被正確移除,但隨後滾動顯示錶格未正確重新加載。

我使用的代碼是:

[_squadArray removeObjectAtIndex:myIndex; 

    [[self tableView] reloadData]; 

這是表看起來像算賬:

enter image description here

僅供參考,表一應具全,而不是停在那裏不動爲止。

更新:cellForRowAtIndexPath方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *MyIdentifier; 
    MyIdentifier = @"cell"; 
    ClubSquadPlayerTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 

    PFObject *object = [_squadArray objectAtIndex:indexPath.row]; 

    cell.playerNameLabel.text = [NSString stringWithFormat:@"%@ %@", [object valueForKey:@"first_name"], [object valueForKey:@"last_name"]]; 
    cell.squadNumberLabel.text = [[object valueForKey:@"squad_number"] stringValue]; 
    cell.positionLabel.text = [object valueForKey:@"position"]; 
    if ([[object valueForKey:@"fitness_status"] isEqualToString:@"Fit"]) 
    { 
     cell.fitnessStatusImageView.image = [UIImage imageNamed:@"fit"]; 
    } else if ([[object valueForKey:@"fitness_status"] isEqualToString:@"Doubtful"]) 
    { 
     cell.fitnessStatusImageView.image = [UIImage imageNamed:@"doubtful"]; 
    } else if ([[object valueForKey:@"fitness_status"] isEqualToString:@"Injured"]) 
    { 
     cell.fitnessStatusImageView.image = [UIImage imageNamed:@"injured"]; 
    } 

    return cell; 
} 
+1

你能告訴我們你的cellForRowAtIndex方法嗎?另外 - 你是否允許用戶從tableView中刪除項目,或者你是否以其他方式執行此操作?最後 - 我假設numberOfRowsInSection方法從myArray屬性獲取它的計數? – Tander

+0

請發佈cellforindexpath方法 – Vig

+0

謝謝您的輸入。已更新最初的問題。用戶可以使用標準刷卡刪除項目進行刪除。是的,數組數量設置行數。 – nickjf89

回答

0

在我看來,像你的問題可以通過Parse's own UI解決。

UITableViewController的解析UI版本是PFQueryTableViewController。您仍然可以使用您的定製單元和插座,但控制器有點不同。

在這種情況下,您的問題將通過[yourTable loadObjects]函數來解決,該函數允許您從PFQuery更新表格。

您直接從PFQuery設置了PFQueryTableViewController而沒有數組。查看更多here

0

當您嘗試刪除對象,因爲我看到它有santax錯誤

你的代碼是

 [_squadArray removeObjectAtIndex:myIndex; 

[[self tableView] reloadData]; 

但應

[_squadArray removeObjectAtIndex:myIndex]; 

[[self tableView] reloadData]; 

有]丟失

+0

這是一個錯字。不過謝謝 – nickjf89

相關問題