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 で notificationcenter を使用しようとしました:

[[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 通知が送信され、viewDidLoad の NSNotificationCenter で正しく受信されます。

[[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 に答える