Как добавить новый объект в представление основной таблицы из всплывающего окна в iPhone? - PullRequest
0 голосов
/ 02 октября 2009

Я работаю над приложением для iPhone, но случилось нечто странное. Я думаю, что могу попросить вас совета.

Я реализовал TableView и пользовательское представление как форму создания нового объекта. Когда пользователь нажимает кнопку «Добавить» на панели инструментов в TableView, пользовательский вид перемещается вверх, как показано ниже:

- (void)slide_up_form:(id)sender {

    CustomViewController *controller = [[CustomViewController alloc] init];

    // Assign this controller to use add_entity: message to TableView.
    controller.parent = self;

    [self presentModalViewController:controller animated:TRUE];
}

// To update TableView presentation.
-(void)add_block:(Block *)newBlock
{
 [blockArray insertObject:newBlock atIndex:0];
 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
 [self.tblCameraList insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                              withRowAnimation:UITableViewRowAnimationNone];

        [self.tblCameraList scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]
                         atScrollPosition:UITableViewScrollPositionTop animated:YES];

 }

и в пользовательском представлении пользователь заполняет форму и вкладку «Сохранить». Поэтому я сохранил сущность в Core data. и нужно обновить TableView с новым объектом, поэтому я кодирую следующий оператор в пользовательском представлении:

@synthesize parent;

- (void)save_block:(id)sender {
// save entity.

[self.parent add_block:newBlock];

// Slide down the custom view and show the TableView.
[[self parentViewController] dismissModalViewControllerAnimated:TRUE];
}

Я уже проверял это на симуляторе и iPhone. когда пользователь нажимает кнопку «Сохранить», приложение сохраняет новую сущность, но не обновляет TableView с новой записью.

Не могли бы вы дать совет, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 02 октября 2009

Взгляните на метод reloadData в UITableView - он сообщает представлению повторить все, что заставляет его отображать ячейки, начиная с выборки данных и далее. Предполагая, что источник данных вашего табличного представления использует хранилище базовых данных для предоставления своих данных, ваша таблица должна содержать новый объект.

В качестве альтернативы, вы можете заставить всплывающий контроллер добавить новый объект в саму таблицу - дать всплывающему контроллеру указатель на таблицу в главном контроллере и использовать любой из методов UITableView для вставки объектов. Просто убедитесь, что то, что вы вставляете в таблицу, соответствует тому, что вы вставляете в хранилище базовых данных. (Вы можете увидеть некоторые проекты Apple Core Data, такие как CoreDataRecipes, чтобы узнать больше об этом.)

...