reloadData из другого класса? - PullRequest
0 голосов
/ 08 марта 2011

Я пытаюсь перезагрузить tableView из другого класса. После некоторых NSLogs в консоли мои данные изменяются, но не изменяются. Ниже приведен код:

SecondViewController.m

RootViewController *test = [[RootViewController alloc] init];
// Set up database connection
NSString *myDB = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"flashpics.db"];
database = [[Sqlite alloc] init];
[database open:myDB];

[database executeNonQuery:@"INSERT INTO albums (id, name, connections) VALUES (?,?,'No Connections')", theID, theName];
[test.listOfItems addObject:theName];


RootViewController *controller = [[RootViewController alloc] init];
[controller.tableView reloadData];

[self dismissModalViewControllerAnimated:YES];

Не могли бы вы помочь мне решить, возможно, один из самых простых вопросов, которые существуют?

Спасибо, Колтон

РЕДАКТИРОВАТЬ # 1: NSLogs отображают следующее. Может ли это быть с чем-нибудь? __NSAutoreleaseNoPool(): Object 0x5883000 of class UITableView autoreleased with no pool in place - just leaking

РЕДАКТИРОВАНИЕ # 2: Добавлен дополнительный код в SecondViewController.m

Редактировать # 3: По какой-то причине это не работает.

SecondViewController.m

RootViewController *controller = [[RootViewController alloc] init];
[RootViewController refreshTableView];

RootViewController.m

- (void) refreshTableView {
[self.tableView reloadData];
NSLog(@"Refreshing TableView - %@", listOfItems);
}

Я вставил 'neato' в массив. Затем я вызвал reloadTableView в SecondViewController.m для RootViewController.m. Я получил вывод, но он не обновил tableView. Ниже NSLog.

Refreshing TableView - (
"Default Album",
"Hello.",
"This is cool!",
hi,
neato
)

P.S. Я не получаю результаты, но я получаю вещи, которые я запрограммировал, чтобы сказать через NSLog.

Ответы [ 2 ]

1 голос
/ 08 марта 2011

вопрос why? или what do you really want to do?

Ваш код не имеет особого смысла, вы создаете новый экземпляр RootViewController и вызываете reloadData до того, как tableView покажет вам некоторые данные. Нет необходимости перезагружать, пока у таблицы нет данных. Но я думаю, что вы хотите сослаться на старый экземпляр вместо нового, который вы только что создали

Если это то, что я думаю, это проект, основанный на навигации, где SecondView создается в tableView:didSelectRowAtIndexPath:, а затем передается в контроллер навигации, вам следует попытаться вызвать [self.tableView reloadData]; в - (void)viewWillAppear:(BOOL)animated RootViewController

Но я просто догадываюсь (хотя я довольно хорош в этом), потому что ваш код не имеет смысла. На этом этапе нет необходимости перезагружать табличное представление, потому что в табличном представлении нет данных.

1 голос
/ 08 марта 2011

Вы инициализируете свой RootViewController дважды.Я думаю, в два раза больше.Вам нужно найти ссылку на ваш контроллер представления и добавить элемент в список listOfItems.Затем вызовите reloadData для UITableView этого контроллера.

...