こんにちは :)
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 と表示されていますが、リロードされませんでした。
あなたが私を理解してくれることを願っています:)!私はデンマーク出身で、英語があまり得意ではありません :)