你好 :)
当我从 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 在 viewDidLoad 中:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateTableView) name:@"UpdateTableViewsNotification" object:nil];
以及来自 NSNotificationCenter 的功能:
-(void)updateTableView
{
[self.tableView reloadData];
}
它可以工作,但我无法重新加载它,我可以写 NSLog(@"TEST"); 在 updateTableView 中,它说 TEST 但它没有重新加载。
我希望你能理解我 :) !我来自丹麦,英语不太好:)