2015-03-03 5 views
11

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

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

ответ

12

, если вы хотите, чтобы вызвать Оформление печатных или просто рисунок есть setNeedsLayout и setNeedsDisplay

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


так сделать перезагрузку и внутри перезагрузки - звонок 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() 
    } 
} 
+1

Как вы думаете, вы могли бы показать мне пример, потому что я не совсем понимаю, что вы имеете в виду с этим. –

+0

Я попытался дать небольшой пример –

+0

Спасибо, это очень помогло, и я получил его сейчас! –

-1

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

viewWillAppear(true)

+0

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