1

你好 :)

当我从 Objective C 底部的 UIActionSheet 弹出窗口添加到收藏夹时,如何更新 UITableView。

这是我的 UIActionSheet 弹出窗口:

// 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]; 

当我推送添加到收藏夹时,我想在另一个 ViewController 中重新加载 UITableView

这是我的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
    }
}

我曾尝试在 clickedButtonAtIndex 中使用通知中心:

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

并将其发送到 FavoritesViewController.m:

在我看来DidLoad:

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

和选择器:

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

但这不起作用。

任何人都可以帮助我:)

我需要知道如何从另一个文件重新加载表格视图。:)


我不知道如何更新表格单元格。

这是我保存收藏夹的功能:

// 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];
}

我的收藏功能:

-(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];
    }
}

但是当我添加一个收藏夹时,我向收藏夹控制器发送了一个 NSNotificationCenter 通知,它会正确接收它,NSNotificationCenter 在 vi​​ewDidLoad 中:

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

以及来自 NSNotificationCenter 的功能:

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

它可以工作,但我无法重新加载它,我可以写 NSLog(@"TEST"); 在 updateTableView 中,它说 TEST 但它没有重新加载。

我希望你能理解我 :) !我来自丹麦,英语不太好:)

4

1 回答 1

0

您只需要在更改用于填充它的数组后调用reloadData您的,所以添加到最后。tableViewsetFavorites[self.tableView reloadData];

于 2012-07-27T18:08:36.153 回答