我正忙於用帳戶頁面製作應用程序。我希望用戶可以通過該頁面登錄,並在成功完成後立即重新加載頁面以顯示其帳戶信息,而不是標準消息,指出他們必須登錄才能使用該頁面。重新加載/更新在Swift中查看
但是,當我從登錄狀態發回賬戶頁面時,視圖並沒有真正更新。因此,我想知道是否在某些按鈕被按下後無法重新加載視圖,這些按鈕可以再次檢查用戶是否登錄並進行相應處理。
我正忙於用帳戶頁面製作應用程序。我希望用戶可以通過該頁面登錄,並在成功完成後立即重新加載頁面以顯示其帳戶信息,而不是標準消息,指出他們必須登錄才能使用該頁面。重新加載/更新在Swift中查看
但是,當我從登錄狀態發回賬戶頁面時,視圖並沒有真正更新。因此,我想知道是否在某些按鈕被按下後無法重新加載視圖,這些按鈕可以再次檢查用戶是否登錄並進行相應處理。
如果要觸發布點,或只是畫有setNeedsLayout
和setNeedsDisplay
有重新加載自定義數據(iOS上)
所以做了重載沒有內置的方法並在一個重新加載 - 呼籲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()
}
}
斯威夫特已真正提高自己和對於很多人來說,如果他們不知道我們可以用一行簡單的代碼刷新整個視圖。
viewWillAppear(true)
我還沒有能夠玩Swift一段時間了,但即使如此,我很確定這不會工作,除非你把所有的刷新邏輯放在viewWillAppear函數中,在這種情況下,你也可以做一個不同的功能並且調用那個。 – 2017-06-07 08:15:05
你認爲你能告訴我一個例子,因爲我不完全理解你的意思有什麼用。 – 2015-03-03 09:12:51
我試圖提供一個小例子 – 2015-03-03 10:40:47
謝謝,這個幫助很大,現在我得到了它的工作! – 2015-03-03 12:05:17