Перезагрузка ViewController

У меня есть контроллер просмотра, отображающий некоторую информацию (а не таблицы).

У меня есть запрос на обновление удаленного сервера, который заполняет мою базу данных. Я хочу полностью перезагрузить мой ViewController после завершения вызова обновления.

Что мне делать?

9 Solutions collect form web for “Перезагрузка ViewController”

Вам действительно не нужно делать:

 [self.view setNeedsDisplay]; 

Честно говоря, я думаю, что это «давайте надеяться на лучший» тип решения, в данном случае . Существует несколько подходов к обновлению UIView s:

  1. КВО
  2. Уведомления
  3. Делегация

У каждого есть плюсы и минусы. В зависимости от того, что вы обновляете и какое «соединение» у вас между бизнес-слоем (подключение к серверу) и UIViewController , я могу порекомендовать тот, который будет соответствовать вашим потребностям.

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

[self viewDidLoad];

снова, и это сработало. помните, если вы переопределите другой viewWillAppear или loadView, тогда вызовите их в том же порядке. как.

[self viewDidLoad]; [self viewWillAppear: YES];

но я думаю, что в браузере должно быть более конкретное решение, например, кнопка обновления. если у кого-то есть plz upload anse

Если вы хотите перезагрузить ViewController, первоначально загруженный из XIB, вы можете использовать следующее расширение UIViewController:

 extension UIViewController { func reloadViewFromNib() { let parent = view.superview view.removeFromSuperview() view = nil parent?.addSubview(view) // This line causes the view to be reloaded } } 

Попробуйте это, вам нужно вызвать оба метода, чтобы перезагрузить просмотр, поскольку этот работает для меня,

Объективный-C

 [self viewDidLoad]; [self viewWillAppear:YES]; 

-Swift

 self.viewDidLoad() self.viewWillAppear(true) 

Обновите данные … измените названия кнопок .. что бы вы ни обновляли.

то просто позвоните

 [self.view setNeedsDisplay]; 

Повторно инициализировать контроллер вида

 YourViewController *vc = [[YourViewController alloc] initWithNibName:@"YourViewControllerIpad" bundle:nil]; [self.navigationController vc animated:NO]; 

Вернитесь к своему ViewController еще раз. в моей ситуации [self.view setNeedsDisplay]; и [self viewDidLoad]; [self viewWillAppear:YES]; [self viewDidLoad]; [self viewWillAppear:YES]; не работает, но метод ниже работал.

В объективе C

 UIStoryboard *MyStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil ]; UIViewController *vc = [MyStoryboard instantiateViewControllerWithIdentifier:@"ViewControllerStoryBoardID"]; [self presentViewController:vc animated:YES completion:nil]; 

Swift:

 let secondViewController = self.storyboard!.instantiateViewControllerWithIdentifier("ViewControllerStoryBoardID") self.presentViewController(secondViewController, animated: true, completion: nil) 

Не рекомендуется вызывать ViewDidLoad или ViewWillAppear самостоятельно.

В ViewDidLoad включена функция loadData () для подготовки данных. Это выполняется при первом запуске.

Когда вы хотите перезагрузить, снова вызовите loadData (), чтобы получить данные из модели. В вызове tableView reloadData () или в обычном представлении setNeedsDisplay ().

Вы должны использовать

 -(void)viewWillAppear:(BOOL)animated 

и установите свои записи, как вы хотите …

  • Добавьте элемент кнопки левой панели в UINavigationController, если нет кнопки возврата
  • Программно установить начальный контроллер представления с помощью раскадровки
  • Лучший подход для создания UIViews для создания сложных представлений?
  • viewWillDisappear и viewDidDisappear никогда не вызываются
  • Как инициализировать представление без известного фрейма?
  • несколько ViewControllers (контейнерViewView? childView? экземпляр viewController?)
  • Когда называется viewWillAppear?
  • Как передать данные в диспетчер представлений и загрузить их, прежде чем нажимать их на стек навигации?
  • Расширенный метод swizzling в Objective-C, iOS 9?
  • Как отменить UIWebView?
  • Реализация PageMenu / инициализация контроллеров представлений из раскадровки
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.