使用 performSegueWithIdentifier 获取 DestinationViewController 的功能,但不显示它
use performSegueWithIdentifier to get functionality of DestinationViewController, but not show it up
我有一个 WatchKit 应用程序,它使用来自 NSUserDefaults
的数据更新一些标签。这些 defaults
由 iOS 应用程序中的两个不同 ViewControllers
更新。
如果我按下 ViewController1
中的一个按钮,iOS 应用程序中的视图以及 WatchKit 应用程序中的视图都会更新(使用 NSTimer 每秒更新一次)。到目前为止一切顺利,但现在我需要一个 defaults
值显示在仅由 iOS 应用程序 ViewController2
更新的手表上。我想留在 ViewController1
的视图上,但是当我按下按钮时,它应该是 ViewController2
中的 'run all the stuff' (特别是在更新特定的 NSUserDefault
值之后所有控制器数学都已完成)但没有移动到它。
我在ViewController1
按钮的@IBAction
功能中尝试了ViewController2().viewDidLoad()
,但是这会导致崩溃。还尝试使用像 here 这样的委托,然后从隐藏标签中获取我的值,但无法使其工作。
当我简单地移动到 ViewController2
和 self.performSegueWithIdentifier("moveToView2", sender: self)
时一切正常(手表上的所有标签都已更新),但我不想移动到 View2,我想留在 View1当按下按钮但首先从 View2 更新 NSUserDefaults
...
您正在与糟糕的设计决策作斗争。
您需要重新考虑您的设计。如果您的功能绑定到您在其他地方需要的视图控制器,则需要将该功能拉出到非视图控制器中 class 并调用它。
我经常创建一个我使用的 Utils class。如果这些方法不需要状态数据,我会让它们成为 class 方法。如果他们需要持久状态数据,我将 utils class 设为单例。
然后我在单例中调用我需要的方法。
我有一个 WatchKit 应用程序,它使用来自 NSUserDefaults
的数据更新一些标签。这些 defaults
由 iOS 应用程序中的两个不同 ViewControllers
更新。
如果我按下 ViewController1
中的一个按钮,iOS 应用程序中的视图以及 WatchKit 应用程序中的视图都会更新(使用 NSTimer 每秒更新一次)。到目前为止一切顺利,但现在我需要一个 defaults
值显示在仅由 iOS 应用程序 ViewController2
更新的手表上。我想留在 ViewController1
的视图上,但是当我按下按钮时,它应该是 ViewController2
中的 'run all the stuff' (特别是在更新特定的 NSUserDefault
值之后所有控制器数学都已完成)但没有移动到它。
我在ViewController1
按钮的@IBAction
功能中尝试了ViewController2().viewDidLoad()
,但是这会导致崩溃。还尝试使用像 here 这样的委托,然后从隐藏标签中获取我的值,但无法使其工作。
当我简单地移动到 ViewController2
和 self.performSegueWithIdentifier("moveToView2", sender: self)
时一切正常(手表上的所有标签都已更新),但我不想移动到 View2,我想留在 View1当按下按钮但首先从 View2 更新 NSUserDefaults
...
您正在与糟糕的设计决策作斗争。
您需要重新考虑您的设计。如果您的功能绑定到您在其他地方需要的视图控制器,则需要将该功能拉出到非视图控制器中 class 并调用它。
我经常创建一个我使用的 Utils class。如果这些方法不需要状态数据,我会让它们成为 class 方法。如果他们需要持久状态数据,我将 utils class 设为单例。
然后我在单例中调用我需要的方法。