因爲我的應用程序像Snapchat一樣設計,所以我有3個視圖(3個不同的xib和類),它們都包含在滾動視圖中。這是我設立的ViewController:如何在滾動視圖中顯示視圖時更新? Viewdidload不工作?
@IBOutlet var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let v1 : View1 = View1(nibName: "View1", bundle: nil)
let v2 : View2 = View2(nibName: "View2", bundle: nil)
let v3 : View3 = View3(nibName: "View3", bundle: nil)
self.addChildViewController(v1)
self.scrollView.addSubview(v1.view)
v1.didMoveToParentViewController(self)
self.addChildViewController(v2)
self.scrollView.addSubview(v2.view)
v2.didMoveToParentViewController(self)
self.addChildViewController(v3)
self.scrollView.addSubview(v3.view)
v3.didMoveToParentViewController(self)
var v2Frame : CGRect = v2.view.frame
v2Frame.origin.x = self.view.frame.width
v2.view.frame = v2Frame
var v3Frame : CGRect = v3.view.frame
v3Frame.origin.x = self.view.frame.width * 2
v3.view.frame = v3Frame
self.scrollView.contentSize = CGSizeMake(self.view.frame.width * 3, self.view.frame.height)
}
viewDidLoad中只受我的視圖控制器,當應用程序第一次打開這些子視圖調用一次,這意味着它不會被我的子視圖一次又一次地叫,當我翻閱。我的問題是我沒有辦法更新我的子視圖中的標籤,因爲我沒有「更新」功能 -
我在NSUserdefaults中存儲了多個ints/values,這些更改隨着應用程序的運行而變化。在View1
我有3級的標籤,顯示與某些鍵INT值:
if prefs.objectForKey("photos") != nil //fix for cross updating
{
photos.text = String(self.prefs.integerForKey("photos"))
}
else {
photos.text = "0"
}
這個偉大的工程,但只有當應用程序第一次打開。如果prefs.integerForKey("photos")
在應用運行時發生變化,當我翻轉回View1
時,標籤仍會顯示相同的舊值。我無法再次調用上述代碼塊來更新標籤。
我試過prefs.synchronize()
希望這可能會影響某些東西,但沒有成功。這是一個很大的問題。
我應該嘗試使標籤公開並直接從其他視圖改變它們嗎?是否有一個更新函數與我在每幀之前可以調用的sprite工具包中的函數類似?
我該如何解決這個問題?