Swift:重新加载视图控制器

Mat*_*oon 29 refresh viewcontroller ios swift

view controller点击某个按钮时我需要刷新.简单地激活viewDidLoad()似乎并不适用于我需要做的事情.然而,当我离开时,view controller回到它,似乎完美的工作?

如何刷新/重新加载view controller,就好像我已经离开它然后回到它而没有真正离开它?

iAn*_*rag 17

无论你写的是什么代码,都要viewDidLoad尝试添加它viewWillappear().我想这会解决你的问题.

  • 仅当您离开视图控制器并返回它时。但是,如果您想在点击按钮时刷新视图控制器,则这将不起作用。 (9认同)

Edw*_*ony 11

您不应手动调用viewDidLoad方法,而是要重新加载任何数据或任何UI,您可以使用:

override func viewDidLoad() {
    super.viewDidLoad();

    let myButton = UIButton()

    // When user touch myButton, we're going to call loadData method
    myButton.addTarget(self, action: #selector(self.loadData), forControlEvents: .TouchUpInside)

    // Load the data
    self.loadData();
}

func loadData() {
    // code to load data from network, and refresh the interface
    tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)

无论何时想要重新加载数据并刷新界面,都可以调用self.loadData()

  • 你如何做这个实际的刷新界面部分? (5认同)
  • 当您想重新加载时,再次调用loadData从模型中获取数据。在tableView中调用reloadData()或在常规视图中调用setNeedsDisplay。 (2认同)

San*_*rma 10

在 Swift 4 中:

self.view.layoutIfNeeded()
Run Code Online (Sandbox Code Playgroud)


Ahm*_*edr 5

这可能有点晚了,但是你尝试打电话吗loadView()

  • public func loadView() // 如果子类不使用 nib,则应在此处创建自定义视图层次结构。**永远不应该直接调用。** [更多这里](http://stackoverflow.com/a/8876346/1264893) (14认同)

Ben*_*tor 5

如果您使用的是导航控制器,您可以再次切换到当前的 UIViewController,它会被刷新。 这里我使用了一个 UIButton 来刷新