使用performSegueWithIdentifier来获取DestinationViewController的功能,但不显示它

时间:2015-04-17 11:53:38

标签: ios swift watchkit

我有一个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 ...

1 个答案:

答案 0 :(得分:0)

你正在反对糟糕的设计决定。

您需要重新考虑您的设计。如果您的功能与其他地方需要的视图控制器相关联,则需要将该功能拉出到非视图控制器类中并调用它。

我经常创建一个我使用的Utils类。如果方法不需要状态数据,我将使它们成为类方法。如果他们需要持久状态数据,我将utils类设为单例。

然后我在单身人士中调用我需要的方法。