iOS TableView Reload после отклонения модального
В моем приложении я перечисляю основные записи данных в виде таблицы. Я хочу разрешить пользователю редактировать записи, используя подробный вид, представленный в виде формы. Я наблюдаю своеобразное поведение при редактировании записей.
Поток:
- Пользователь загружает tableview с записями. -за работой
- Пользователь выбирает запись для редактирования. -за работой
- Запись пользовательских прав в контроллере представления представлена в виде модальной формы. -за работой
- Пользователь сохраняет изменения и отклоняет вид формы. -за работой
- В таблице показаны правильные изменения для ранее отредактированной записи. -за работой
- Пользователь повторяет шаги 2 – 4, чтобы выбрать другую запись для редактирования. -за работой
- В таблице показаны правильные данные для всех записей. -Не работает.
На шаге 7 табличное представление возвращает отображение первой отредактированной записи в исходное состояние. Последующие изменения записи приводят к возврату всех предыдущих изменений в исходное состояние. Если табличное представление отклонено и перезагружено, записи верны, показывая все изменения.
- Перезагрузка заголовка tableView в ios7
- cell.backgroundColor вопрос
- iOS: панель прокрутки UITableView, скрытая подвью
- Изменение UIAccessibility UITableView объявления голосовой записи (строка # из #)
- Продолжительность анимации редактирования UITableView
Я использовал [tableview reload] в методе ViewWillAppear в tableview, но, похоже, он не запускается, когда диспетчер просмотра модальной формы отклонен.
В моем контроллере tableviewcontroller:
-(void)viewWillAppear:(BOOL)animated { [self.tableView reloadData]; }
В поисках, я не нашел решения и надеюсь, что кто-то может указать мне в правильном направлении.
Благодаря!
- Сегодня виджет tableView зависает
- IOS UITableview, как принять меры после завершения анимации таблицы
- Передача информации между делегатами по ObjectiveC
- Swift: градиент на ячейке таблицы
- Этот код не показывает таблицы, почему?
- swift numberOfRowsInSection из словаря
- Как вы меняете класс TableViewController?
- UITableViewCell исчезает при быстрой прокрутке
Когда вы представляете модальное представление, представление контроллера главного вида никогда не исчезает. Итак, после отклонения вашего модального вида viewWillAppear () не будет вызываться.
Вы можете попытаться реализовать пользовательскую функцию делегата в своем модальном представлении и установить его в главном контроллере представления, когда ваши данные будут обновлены, запустите функцию делегата, чтобы перезагрузить tableView, который находится на вашем основном viewController.
Понять, что такое функция делегата в iOS, и
как создать функцию делегата выглядит так:
-
В вашем ModalView.h:
// define the protocol for the delegate @protocol ModelViewDelegate <NSObject> - (void) didUpdateData; @end @interface ModalView: ViewController { //create a delegate instance id delegate; } // define delegate instance @property (nonatomic, assign) id <ModelViewDelegate> delegate;
-
В вашем modalView.m:
@synthesize delegate;
а затем внутри вашей функции, поставьте функцию делегата на место, где вам нужно запустить, например:
- (void) updateDataIntoDatabase{ .... //Update work done. [self.delegate didUpdateData]; //dismiss your modalView; }
Итак, в вашем MainViewController.h,
#import ModalView.h
а также
@interface ModalView: ViewController <ModelViewDelegate > { ... }
Внутри MainViewController.m вы получите предупреждение о том, что вам нужно реализовать функцию делегата, которую вы уже объявили. Итак, установите функцию делегата и сделайте то, что вам нравится:
- (void) didUpdateData{ [self.tableView reloadData]; }
Не забудьте установить свой делегат modelView самостоятельно после создания экземпляра modalView. Если ваша функция делегата не будет запущена.
modalView.delegate = self;
Используйте блок завершения при запуске Modal viewcontroller:
-(void)editModal:(id)sender { KDSecondViewController *secondVC = [[KDSecondViewController alloc] init]; [self presentViewController:secondVC animated:YES completion:^{ //-- reload your table view when user dismiss the modal view [self.tableView reloadData]; }]; }