0

スワイプして削除すると、テーブルビューでこのエラーが発生し続けます。一般的な編集ボタンで編集モードになり、それで問題なく削除できますが、セルをスワイプするとクラッシュし、不正なアクセスエラーが返されます。どこかにデータ通信エラーがあると思いますが、わかりません。編集とセルのタップを使用して削除できますが、スワイプするとクラッシュします。テーブルビューを作成するこのView Controllerがあります。コードは次のとおりです。

私のView Controllerには次のコードがあります:

-(void)viewWillAppear:(BOOL)animated
{
    [self controllerSetup];

}

-(void)controllerSetup
{


        firstController = [[TeacherSplitTableController alloc] initWithStyle:UITableViewStyleGrouped];
        [firstTable setDataSource:firstController];
        [firstTable setDelegate:firstController];
        firstController.view = firstController.tableView;
        [firstController setDelegate:self];
        [self tableSetUp];

}

-(IBAction)edit:(id)sender
{
    if (!editting) {
            editting = YES;
            self.navigationItem.hidesBackButton = YES;
        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(Add:)];
        //Displays add button over the back button
            [self.firstTable setEditing:YES animated:YES];
    } else {
            editting = NO;
            self.navigationItem.hidesBackButton = NO;
        self.navigationItem.leftBarButtonItem = NO;
            [self.firstTable setEditing:NO animated:YES];
    }

}

TeachersplittableController コードは次のとおりです。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source

        [self openDB];
        NSString *sql = [NSString stringWithFormat:@"DELETE FROM Children WHERE Name = '%@' ",[listofnames objectAtIndex:indexPath.row]]; //Queries table for the childs name and returns more data.
        sqlite3_stmt *statement;
        if (sqlite3_prepare_v2(Childdb, [sql UTF8String], -1, &statement, nil)==SQLITE_OK){
                    while (sqlite3_step(statement)==SQLITE_ROW) {
                    }
        }


        [listofnames removeObjectAtIndex:indexPath.row];
        [listoftickets removeObjectAtIndex:indexPath.row];
        //[theDataObject.names removeObjectAtIndex:indexPath.row];
        //[theDataObject.totaltickets removeObjectAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }   
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }   
}

/*
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Return NO if you do not want the specified item to be editable.
    return YES;
}
*/

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
    [self setEditing:editing animated:YES];


}

コードをスリムに保ち、質問に関連させようとしました。さらにコードが必要な場合は、お問い合わせください。しかし、私は問題を見ることができません:(すべての助けをありがとう:)

4

1 に答える 1

2
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
    [self setEditing:editing animated:YES];
}

私には素敵な無限ループのように見えます。

アプリがクラッシュするまでの計算時間はありますか? そうでない場合 - ゾンビを有効にしましたか?

于 2013-03-13T16:40:53.733 に答える