2016-04-27 90 views
0

當顛倒視圖的細節時,我想要執行某些代碼。這與viewdidload不同,或viewdidappear不同,因爲我不希望它在應用第一次啓動時運行,因爲它是我的初始視圖控制器,但只有在從另一個視圖返回時纔會運行。如何在返回視圖時快速執行某些代碼

我該如何去做到這一點?

謝謝。

回答

0

你應該爲這種事情使用委託,這是第一個tutorial i saw on google about it,但谷歌可以爲一些不同的。委託是所有iOS開發人員應該知道的以及何時使用的關鍵編碼模式。

因此,在你的情況下,你的第一個視圖控制器將是第二個視圖控制器的委託,這將允許第二個vc在第一個vc上執行方法,當它看起來合適時,對於這種情況我會假設在第二個VC可以追溯到第一

0

最簡單的方法是讓一些布爾屬性格式(如Bool firstAppear),然後用真正的初始化它在viewDidLoad方法,然後在viewDidAppear:

if firstAppear { 
    firstAppear = false 
    return 
} 
0

您可以使用viewWillAppear中和viewDidAppear方法。他們不僅召喚了一次,而且每次都會出現您的視圖控制器。 viewDidLoad在視圖控制器加載後僅調用一次

+0

感謝您的 – Khoury

0

讓我們考慮兩個視圖控制器VC1和VC2。您現在處於VC2並嘗試導航。在VC2的ViewWillDisappear中試試這個代碼。

let defaults = NSUserDefaults.standardUserDefaults() 
    defaults.setBool(true, forKey: "mykey") 

現在您正在導航回到VC1。在VC1 viewWillAppear中使用此代碼

let defaults = NSUserDefaults.standardUserDefaults() 
let mykey = defaults.boolForKey("mykey") 
    if mykey { 
     defaults.setBool(false, forKey: "mykey") 
     //execute your code here 
    } 
+0

這不適合我嗎? – Khoury

0

首先,你可以設置此例如在的AppDelegate

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
... 
    let alreadyLaunched = NSUserDefaults.standardUserDefaults().boolForKey("alreadyLaunched") 
    if alreadyLaunched { 
     print("This is not the first app launch.") 
    } 
    else { 
     print("First app launch, setting NSUserDefault.") 
     NSUserDefaults.standardUserDefaults().setBool(true, forKey: "alreadyLaunched") 
    } 
} 

然後檢查,無論你想:

let alreadyLaunched = NSUserDefaults.standardUserDefaults().boolForKey("alreadyLaunched") 
if alreadyLaunched { 
    print("This is not the first app launch.") 
} 
相關問題