2011-12-08 61 views
0

我有一个tabBar应用程序。在应用程序委托中,我创建了一个NSMutableArray,一个UITableViewController和一个可以更新NSMutableArray的类(可以说类B)。 使用TabBar包含 一)tableViewController其示出了在* booksArray b)中B级这增加了数据到booksArrayUITableViewController不刷新

的的tableView工作很大首次加载时,它的数据。问题是,当数组更新时,在UItableViewContoller中没有发生任何更改(,当我再次选择它的选项卡时)。我必须使用授权吗?我必须改变我的建筑吗?

的AppDelegate:

visibleBooks = [[NSMutableArray alloc] init]; 
UINavigationController *navController = [[UINavigationController alloc] 
initWithRootViewController:booksTableViewController]; 

UITabBarController *tabBarController = [[UITabBarController alloc] init]; 
NSArray *viewControllers = [NSArray arrayWithObjects:navController,qrViewController, nil]; 
[tabBarController setViewControllers:viewControllers]; 

在的UITableViewController .H:

@class BookDetailedViewController; 

@interface BooksTableViewController : UITableViewController { 

    NSMutableArray *bookSource; 
} 

@property (nonatomic,retain) NSMutableArray *bookSource; // IS RETAIN OK? 

- (id) initWithDataSource: (NSMutableArray *) source; 

@end 

在的UITableViewController的.m:

- (id) initWithDataSource: (NSMutableArray *) source 
{ 
    [super initWithStyle:UITableViewStyleGrouped]; 
    [self setBookSource:source]; 
    [[self navigationItem] setTitle:@"Books"]; 

    return self; 
} 
+0

'[的tableView reloadData];'? 'RETAIN'确定。 – Kjuly

回答

1

您需要在您的数据源更新每次调用[self.tableView reloadData]UITableViewController,或当你展示你的tableView.

这可以viewWillAppear:做你的BooksTableViewController内,或在tabBar:didSelectItem:UITabBarController

例如,这个代码段添加到BooksTableViewController

- (void) viewWillAppear:(BOOL) animated 
{ 
    [super viewWillAppear:animated]; 
    [self.tableView reloadData]; 
} 
+1

请将它改为[self.tableView reloadData]; –