开发者

delete row i uitableview working but cant reflect always on iphone

i can successfuly delete data from tableview , but when i go to main menu and come back then i see all the old data,

how to make data consistent , i.e once deleted it will be gone forever

- (void)viewDidLoad
{
    [super viewDidLoad];
    appDelegate = (DatabaseTestAppDelegate *)[[UIApplication sharedApplication] delegate];

        {
     appDelegate.favDetail = [[NSMutableArray alloc] initWithObjects:@"1", @"2",@"4",nil];
        }

}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    appDelegate = (DatabaseTestAppDelegate *)[[UIApplication sharedApplication] delegate];



     NSString *cc=[appDelegate.favDetail objectAtIndex:indexPath.row];
    NSLog(@" vale is %d",indexPath.row);
    // Configure the cell...
     NSArray *theParameters = [cc componentsSeparatedByString:@","];



    NSLog(@"array is %@",cc);
          NSLog(@"arraytheParameters is %@",theParameters);

    cell.text=cc;//theParameters;
    return cell;
}



// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{   NSLog(@"matrix is her%@",appDelegate.favDetail);
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source



        [appDelegate.favDetail removeObjectAtIndex: indexPath.row];
        [tableView beginUpdates];
        [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject: indexPath] withRowAnimation:UITableViewRowAnimationFade];
        [tableView endUpdates];
    }   

     /*
    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
    } */


}



- (void)viewWillAppear:(BOOL)animated
{ [tableView reloadData];
    [super viewWillAppear:animated]; // no 开发者_开发百科use , it shows old data
}

thanks


If you are looking to save the state of your model beyond the life of your table view controller, there are few things you can do. One is to write the array to a file in the documents directory and read it back on reload. This would work well will small sets of data. But if you are going to use a large data set, you have to use Core Data.

As for this specific case, you are reinitializing the data on every viewDidLoad. I suggest you do this in viewDidLoad

...
if ( appDelegate.favDetail == nil ) {
    appDelegate.favDetail = [[NSMutableArray alloc] initWithObjects:@"1", @"2",@"4",nil];
}
...

This will make sure that you don't reinitialize it.


you have to delete the data in both your view and your model


Check out the place where appDelegate.favDetail is getting data from...

While deleting you are removing from appDelegate.favDetail but When you go to main menu and come back you are reassigning the values to appDelegate.favDetail...

Checkout that appDelegate.favDetail only gets the value once.. or another option is you remove the data from the main source from where the favDetail gets the value

Happy iCoding....

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜