web-dev-qa-db-ja.com

Swift:View Controllerのリロード

特定のボタンがタップされたときにview controllerを更新する必要があります。単にviewDidLoad()をアクティブ化しても、私がする必要のあることに対しては機能していないようです。ただし、view controllerをそのままにして戻った場合、完全に機能しているように見えますか?

view controllerを更新/リロードして、実際にそれを残さずに、そこに戻ったようにするにはどうすればよいですか?

28
Matt Spoon

viewDidLoadに記述しているコードが何であれ、viewWillappear()に追加します。これで問題が解決します。

16
iAnurag

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()
}

データをリロードしてインターフェースを更新したいときはいつでもself.loadData()を呼び出すことができます

10
Edward Anthony

Swift 4:

self.view.layoutIfNeeded()
2

これは少し遅いかもしれませんが、loadView()を呼び出してみましたか?

2
Ahmed Khedr

ViewControllerのViewまたは任意のビューをリロードするときに、いつでも呼び出します

<View you want to reload>.setNeedsLayout()
<View you want to reload>.layoutIfNeeded()
0
Avinash