2015-04-17 24 views
0

我有一個WatchKit應用程序,它用來自NSUserDefaults的數據更新一些標籤。這些defaults由iOS App中的兩個不同ViewControllers更新。 如果我按下ViewController1中的按鈕,則iOS App中的視圖以及WatchKit App中的視圖會更新(使用NSTimer每秒更新一次)。目前爲止這麼好,但現在我只需要在iOS Apps ViewController2更新的手錶上顯示defaults值。我想留在ViewController1的視圖中,但是當我按下按鈕時,它應該是'運行所有的東西'在ViewController2(尤其是在所有控制器數學完成後更新具體的NSUserDefault值),但不移動到它。使用performSegueWithIdentifier來獲取DestinationViewController的功能,但沒有顯示它

我已經嘗試功能ViewController1中按鈕的ViewController2().viewDidLoad(),但這會導致崩潰。也嘗試使用像here這樣的委託,然後從隱藏的標籤中獲取我的價值,但無法使其工作。

當我乾脆轉移到ViewController2self.performSegueWithIdentifier("moveToView2", sender: self) 一切運作良好(上觀看所有的標貼被更新),但我不想要移動到視圖2,我希望當按下按鈕留在視圖1,但得到的NSUserDefaults首先從View2更新...

回答

0

您正在對付糟糕的設計決策。

您需要重新考慮您的設計。如果您的功能與您在其他地方需要的視圖控制器綁定,則需要將該功能提取到非視圖控制器類中並調用該功能。

我經常創建一個我使用的Utils類。如果這些方法不需要狀態數據,我將使它們成爲類方法。如果他們需要持久化狀態數據,我會將utils類設置爲單例。

然後我在單身人士內部調用我需要的方法。

相關問題