重新加载ViewController

我有一个视图控制器显示一些信息(不是表视图)。

我有一个更新调用到填充我的数据库的远程服务器。 更新调用完成后,我想完全重新加载我的ViewController。

我该怎么办?

你真的不需要做:

 [self.view setNeedsDisplay]; 

老实说, 在这种情况下 ,我认为这是“让我们希望最好”的解决scheme。 有几种方法来更新你的UIView

  1. KVO
  2. 通知
  3. 代表团

每个人都有优点和缺点。 根据你正在更新什么和你的业务层(服务器连接)和UIViewController之间有什么样的“连接”,我可以推荐一个适合你的需求。

如果你知道你的数据库hasbee更新,你想刷新viewcontrolle(这也是我的例子)。 我没有find任何其他的解决scheme,但我所做的是当我的数据库更新我打电话

[self viewDidLoad];

再次,它的工作。 请记住,如果您覆盖其他viewWillAppear或loadView,然后按照相同的顺序调用它们。 喜欢。

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

但我认为应该有一个更具体的解决scheme,如浏览器中的刷新button。 如果有人有plz上传anse

如果你想重载一个最初从XIB加载的ViewController,你可以使用下一个UIViewController扩展:

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

试试这个,你必须调用这两个方法来重新加载视图,因为这个对我来说很合适,

-Objective-C

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

-迅速

 self.viewDidLoad() self.viewWillAppear(true) 

更新数据…更改button标题..什么东西,你必须更新..

然后就打电话

 [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]; 

迅速:

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

不build议您自己调用ViewDidLoad或ViewWillAppear。

在ViewDidLoad中包含一个loadData()函数来准备数据。 这是在初始运行中执行的。

当你想重载时,再次调用loadData()来获取模型中的数据。 在tableView中调用reloadData()或在常规视图setNeedsDisplay()中。

你必须使用

 -(void)viewWillAppear:(BOOL)animated 

并设置你想要的条目…