UITableViewController не обновляется - PullRequest
0 голосов
/ 08 декабря 2011

У меня есть приложение tabBar. В делегате приложения я создаю один NSMutableArray, один UITableViewController и один класс (скажем, класс B), который обновляет NSMutableArray. Панель вкладок содержит a) tableViewController, который показывает данные в * booksArray б) Класс B, который добавляет данные в booksArray

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

1 Ответ

1 голос
/ 08 декабря 2011

Вам нужно вызывать [self.tableView reloadData] в UITableViewController каждый раз, когда обновляется ваш источник данных или когда вы показываете tableView.

Это можно сделать в viewWillAppear: внутри вашего BooksTableViewController или в tabBar:didSelectItem: внутри UITabBarController.

, например, добавьте этот фрагмент кода в BooksTableViewController:

- (void) viewWillAppear:(BOOL) animated
{
    [super viewWillAppear:animated];
    [self.tableView reloadData];
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...