2013-10-23 51 views
0

單擊單元格編輯對象後,單元格將打開另一個VC以允許編輯,但如果用戶單擊取消,單元格仍處於選中狀態,並且很快會導致出現問題和崩潰。打開另一個視圖並取消後選中單元格

細胞編輯:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 

    if ([segue.identifier isEqualToString:@"addAssignment"]) 
    { 
     AddEditViewController *addEditController = segue.destinationViewController; 
     [addEditController setOtherdelegate:self]; 
    } 


    if ([segue.identifier isEqualToString:@"edit"]) { 
    UITableViewCell *cell = sender; 
    AddEditViewController *addEditController = segue.destinationViewController; 
    [addEditController setOtherdelegate:self]; 
    addEditController.edit = YES; 
    AssignmentInfo *a = [self.alist objectAtIndex:[self.tableView indexPathForCell:cell].row]; 
    addEditController.assignmentEditing = a; 

    [self.alist removeObject:a]; 
    [self.tableView reloadData]; 
    NSString *filePath = [self dataFilePath]; 
    [NSKeyedArchiver archiveRootObject:self.alist toFile:filePath]; 
    } 
} 

取消按鈕按下:

- (IBAction)addAssignmentCancelButtonPressed:(id)sender { 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

整個項目如果需要的話: http://abdelelrafa.com/AssignmentAppTwo.zip

回答

1

首先,你必須做的就是刪除此行:

[self.alist removeObject:a]; 

下一頁你:-(void)newAssignment:(AssignmentInfo *)assignment 刪除:

[self.tableView reloadData]; 

,並添加:

[self.tableView reloadData]; 

-(void)deletedAssignment:(AssignmentInfo *)assignment

最後在:-(void)newAssignment:(AssignmentInfo *)assignment 刪除:

NSString *filePath = [self dataFilePath]; 
[NSKeyedArchiver archiveRootObject:self.alist toFile:filePath]; 

,並添加:

NSString *filePath = [self dataFilePath]; 
[NSKeyedArchiver archiveRootObject:self.alist toFile:filePath]; 

-(void)deletedAssignment:(AssignmentInfo *)assignment

0

您所呼叫的

[self.alist removeObject:a]; 
每次單擊某個單元格時都會使用

方法。因此,當您刪除對象時再次選擇單元格時,您會遇到數組超出範圍的情況。

我不太清楚你想怎麼你的應用程序流程是,但你可以撥打:您刪除的「a」對象刷新表

[self.tableView reloadData]; 

之後。這樣,表格將顯示最新的數據。否則,我建議你不要調用removeObject,而是實際將對象傳遞給你的AddEditViewController並在那裏修改它。

+0

我將如何修改我的代碼來做到這一點我是相當新和學習。 – AbdelElrafa

0

檢查值UITableViewController -clearsSelectionOnViewWillAppear

該設置默認爲YES,所以如果它是錯誤的並且您沒有手動將其設置在某處,那麼您的View或View Controller生命週期可能會變得混亂。

相關問題