Обновить/Обновить в Swift

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

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

Ответ 1

если вы хотите вызвать макет или просто рисовать, есть setNeedsLayout и setNeedsDisplay

Не существует встроенного метода для перезагрузки пользовательских данных (на iOS)


так что перезагрузите и внутри reload-call setNeedsDisplay

import UIKit

protocol MyViewDelegate {
    func viewString() -> String;
}

class MyView : UIView {
    var myViewDelegate : MyViewDelegate?
    private var str : String?

    func reloadData() {
        if myViewDelegate != nil {
            str = myViewDelegate!.viewString()
        }
        self.setNeedsDisplay()
    }

    override func drawRect(rect: CGRect) {
        UIColor.whiteColor().setFill()
        UIRectFill(self.bounds)
        if str != nil {
            let ns = str! as NSString
            ns.drawInRect(self.bounds, withAttributes: [NSForegroundColorAttributeName: UIColor.blueColor(), NSFontAttributeName: UIFont.systemFontOfSize(10)])
        }
    }
}


class ViewController: UIViewController, MyViewDelegate {
    func viewString() -> String {
        return "blabla"
    }

    var v : MyView!

    override func viewDidLoad() {
        super.viewDidLoad()

        v = MyView(frame: self.view.bounds)
        self.view.addSubview(v)

        v.myViewDelegate = self;
    }

    override func viewWillAppear(animated: Bool) {
        v.reloadData()
    }
}

Ответ 2

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

viewWillAppear(true)