因为我的应用程序像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工具包中的函数类似?
我该如何解决这个问题?