2013-04-16 2 views
1

У меня есть приложение Xcode, которое создает табличное представление, а затем заполняет его данными из базы данных sqlite, это отлично работает и позволяет мне выводить данные на новое представление и удалять и т. Д.,self.tableView reloadData не работает в viewWillAppear

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

Я попытался [self.tableView reloadData] в функции viewWillAppear, но это ничего не делает. Я знаю, что функция вызвана, поскольку я поставил NSLog в их только для спокойствия.

Я нашел то, что, на мой взгляд, может быть решением здесь, но я не могу заставить его работать!

viewWillAppear, viewDidAppear not being called, not firing

я отправлю мой код ниже и снимок экрана раскадровки, как им убежден, что это мой бедный способ настройки контроллеров, что вызвало эту ошибку. Любая помощь будет высоко ценится, как я сейчас нахожусь на стадии расплавления: D

-(void)viewWillAppear:(BOOL)animated { 

//[super viewWillAppear:animated]; 

//[self.tabBarController viewWillAppear:animated]; 

[self.tableView reloadData]; 
NSLog(@"i just ran viewwillAppear"); 

} 


- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 

athleteObject *athObj3 = [athletes objectAtIndex:indexPath.row]; 

athleteIdDelete = athObj3.athId; 

[self openDatabase]; 

[self deleteAthleteFromDataBase]; 

[athletes removeObjectAtIndex:indexPath.row]; 

[tableView reloadData]; 

} 

reloadData работает в моей функции commitEditing (это обновляет TableView, когда я удалить запись с помощью салфетки)

любой помощи будем очень благодарны, il опубликуйте снимок экрана ниже.

(не могу понять, как загрузить скриншот, если ее даже возможно)

ответ

5

Это выглядит как спортсмены (а NSMutableArray я предполагаю) не обновляется в viewWillAppear. Вы пытались запустить селектор, который заполняет массив из базы данных, прежде чем вызывать reloadData?

Надеюсь, что это поможет!

+0

Приветствия за помощь, на которой вы были на месте! У меня есть функция getDataIntoAthleteArray, которая извлекает данные из базы данных sqlite и сохраняет ее в массиве. Все, что мне нужно было сделать, это вызвать эту функцию, прежде чем перезагружать данные в таблице. Это имеет смысл после того, как вы упомянули об этом, я просто не мог видеть лес для tres: D Я бы поднял голову, но я нахожусь на этом сайте :( –

+0

Рад, что это помогло. – Pablo

0

Я предполагаю, что вы задаете количество строк/разделов в своем коде, исходя из количества возвращаемых объектов из базы данных.

Установите точку останова при этом методе и получите счетчик каждый раз, когда компилятор разбивается. Вероятно, вы не получаете никаких объектов из базы данных, поэтому компилятор никогда не запускает остальные методы представления данных в виде таблицы.

Смежные вопросы