How can i update UITableView when i add to favorite from UIActionSheet popup from bottom in Objective C?

342 Views Asked by At

Hello :)

How can i update UITableView when i add to favorite from UIActionSheet popup from bottom in Objective C.

Here is my UIActionSheet Popup:

// Jeg laver popup fra bunden med alle de ting du kan share med
shareSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:
              @"Add to favorites",@"Email",@"Facebook",@"Twitter",@"Google+",@"Linkedin", nil];
[shareSheet showInView:[self.view window]];
[shareSheet release]; 

When i push add to favorites so i want to reload UITableView in another ViewController

Here is my actionSheet clickedButtonAtIndex:

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex(NSInteger)buttonIndex
{
    if(buttonIndex == 0)
    {
       // I have some code here to add to favorite NSUserDefaults, and it work fine.
       // But how can i reload UITableView in my FavoritesViewController.m
    }
}

I have tried to use notificationcenter in clickedButtonAtIndex:

[[NSNotificationCenter defaultCenter] postNotificationName:@"UpdateTableViewsNotification" object:self];

And sendt it to FavoritesViewController.m:

In my viewDidLoad:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateTableView) name:@"UpdateTableViewsNotification" object:nil];

And selector:

-(void)updateTableView
{
    [self.tableView reloadData]; 
}

But that doesn't work.

Can anyone help me with that :)

I need to know how to reload a table view from another file. :)


I dont know how to update table cells.

Here is my function to save favorites:

// Nu arbejder jeg med favoritter
if(buttonIndex == 0)
{
    // Jeg opretter NSMutableArray for at kunne bruge det til at gemme i
    NSMutableArray *objectArray;
    // Jeg laver en NSUserDefaults for at kunne gemme alle mine data der i
    NSUserDefaults *favoritesDefaults = [NSUserDefaults standardUserDefaults];
    // Jeg opretter et oldArray for at gemme data hvis den ikke er tom
    NSArray *oldArray = [favoritesDefaults objectForKey:@"favorites"];
    // Den er ikke tom
    if (oldArray != nil) 
    {
        // Så gemmer jeg oldArray der i
        objectArray = [[NSMutableArray alloc] initWithArray:oldArray];
    } 
    else
    {
        // Ellers opretter jeg NSMutableArray
        objectArray = [[NSMutableArray alloc] init];
    }   
    // Jeg tilføjer object saveTip til objectArray
    [objectArray addObject:showTip];
    // Og derefter gemmer det i NSUserDefaults
    [favoritesDefaults setObject:objectArray forKey:@"favorites"];
    // Sender post notification til favorit om at opdatere sig
    [[NSNotificationCenter defaultCenter] postNotificationName:@"UpdateTableViewsNotification" object:self];
    [favoritesDefaults synchronize];
}

And my function to get favorites:

-(void)setFavorites
{
    // Tjekker om de er blevet sat
    if(favoriteArray == nil || favorite == nil || newfavoriteArray == nil)
    {
        // Jeg sætter favoriteArray
        favoriteArray    = [[NSMutableArray alloc] init];
        // Jeg sætter favorite
        favorite         = [NSUserDefaults standardUserDefaults];
        // Jeg sætter newfavoriteArray
        newfavoriteArray = [[NSMutableArray alloc] init];
    }

    // Den skal kun køre denne hvis favorites ikke er tom
    if([favorite objectForKey:@"favorites"] != nil)
    {
        // Smider data i favoriteArray fra NSUserDefaults
        [favoriteArray addObject:[favorite objectForKey:@"favorites"]];
        // Jeg skal pakke favoriteArray for at kunne tælle og trække data fra objektet
        for(NSDictionary *favoriteTip in favoriteArray)
        {
            // Pakker objektet ud igen
            for(NSDictionary *getTipFromFavorite in favoriteTip)
            {
            // Jeg pakker objekterne ud en gang til
                for(NSDictionary *getTipFromFavoriteNew in getTipFromFavorite)
                {
                    [newfavoriteArray addObject:getTipFromFavoriteNew];
                }
            }
        }
    }

    // Jeg tjekker om der er favoritter da jeg skal vise edit knappen
    if(newfavoriteArray.count != 0)
    {
        // Man skal kunne slette favoritter igen    
        self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Delete" style:UIBarButtonSystemItemTrash target:self action:@selector(switchDeleteForm)] autorelease];
    }
}

But when i add a favorite i sendt a NSNotificationCenter notification to favorites controller, and it receive it correctly, with NSNotificationCenter in viewDidLoad:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateTableView) name:@"UpdateTableViewsNotification" object:nil];

And function from NSNotificationCenter:

-(void)updateTableView
{
    [self.tableView reloadData];
}

it works, but i cant reload it, i can write NSLog(@"TEST"); in updateTableView and it says TEST but it didnt reload.

I hope you understand me :) ! I am coming from denmark and not so good to english :)

1

There are 1 best solutions below

4
On

You just need to call reloadData on your tableView after you have altered the array used to populate it, so in setFavorites add [self.tableView reloadData]; to the end.