我有一个WatchKit应用程序,用NSUserDefaults
的数据更新一些标签。这些defaults
由iOS应用中的两个不同ViewControllers
更新。
如果我按下ViewController1
中的按钮,iOS应用程序中的视图以及WatchKit应用程序中的视图会更新(使用NSTimer每秒更新一次)。到目前为止一切都很好,但现在我需要在Watch上显示defaults
值,该值仅由iOS Apps ViewController2
更新。我希望保持ViewController1
的观点,但是当我按下按钮时,它应该会运行所有的东西'在ViewController2
中(特别是在完成所有控制器数学运算后更新特定的NSUserDefault
值)但没有移动到它。
我在ViewController2().viewDidLoad()
按钮的@IBAction
函数中尝试了ViewController1
,但这会导致崩溃。还尝试使用像here之类的委托,然后从隐藏的标签中获取我的值,但无法使其正常工作。
当我简单地移动到ViewController2
时,self.performSegueWithIdentifier("moveToView2", sender: self)
一切正常(Watch上的所有标签都已更新),但我不想移动到View2,我想留在View1上按下按钮但首先从View2更新NSUserDefaults
...
答案 0 :(得分:0)
你正在反对糟糕的设计决定。
您需要重新考虑您的设计。如果您的功能与其他地方需要的视图控制器相关联,则需要将该功能拉出到非视图控制器类中并调用它。
我经常创建一个我使用的Utils类。如果方法不需要状态数据,我将使它们成为类方法。如果他们需要持久状态数据,我将utils类设为单例。
然后我在单身人士中调用我需要的方法。