是否有可能在iOS 6中知道UIStoryboardSegue
何時完成其轉換?就像當我添加一個UIStoryboardSegue
從UIButton
推導向另一個UIViewController
導航控制器上,我想推後推完成後的東西。如何在segue完成後執行一些代碼?
回答
您可以使用UINavigationControllerDelegate
協議,然後定義:
– navigationController:didShowViewController:animated:
如果你不想使用viewDidAppear:
方法,你可以創建一個自定義的segue。在perform
方法中,您將爲動畫使用動畫,並且可以有一個完成塊。您可以在動畫完成後將代碼添加到那裏。
所以在Storyboard中使用標準的拖放式繼承是不可能的? – hakonbogen
這是你如何創建它,但你必須繼承'UIStoryboardSegue'並在其中實現'perform'方法。之後,在'storyboard'中,您將segue的課程設置爲您剛剛創建的課程。 – Levi
您可以使用 - (空)prepareForSegue:(UIStoryboardSegue *)賽格瑞發件人:(ID)發送
權之前在源UIViewController中執行賽格瑞此方法將被調用。如果您想在目標UIViewController中執行一些代碼,您可以獲得segue的目標視圖控制器。
您也可以將此代碼添加到desintation viewController中的viewdidAppear中。
您可以在prepareForSegue方法中調用目標方法UIViewController。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"prepareForSegue: %@", segue.identifier);
if ([segue.identifier isEqualToString:@"Happy"]) {
[segue.destinationViewController setHappiness:100];
} else if ([segue.identifier isEqualToString:@"Sad"]) {
[segue.destinationViewController setHappiness:0];
}
}
這裏setHappiness方法是目的地控制器,這裏有100個傳遞。所以你可以寫在目標控制器的方法,在這裏稱之爲
這並不能真正指出什麼時候實際的賽季完成,但這發生在賽季開始時 – Sam
在斯威夫特,從UIViewController
子類,你可以得到UINavigationController
實例,並設置代表,以便了解有關賽段的完成情況,如圖所示。跟蹤賽段的另一個合理位置可能是AppDelegate
。
實施例(VC的簡稱):
class MyViewControllerSubclass : UIViewController, UINavigationControllerDelegate {
func viewDidLoad() {
self.navigationController.delegate = self
}
func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool) {
println("Did show VC: \(viewController)")
}
}
但是,這僅顯示了當SEGUE到VC完成後, 如VC將viewWillAppear()
或viewDidAppear()
委託方法被呈現;然而,他們並不知道何時目標VC是聯合國-介紹。
在您要跟蹤的VC中,可以添加以下內容來檢測VC(及其內存)何時解除分配,或覆蓋viewWillDisappear()
方法。
deinit {
println(__FUNCTION__, "\(self)")
}
- 1. Javascript如何在forEach完成執行後運行一些代碼
- 2. downloadTask完成後執行segue
- 3. 如何在UIView自定義繪圖代碼完成後執行一些代碼?
- 4. ios - 如何使一個segue只在一些代碼執行後才起作用?
- 5. 如何在特定線程完成其工作後執行一些代碼?
- 6. 在某些代碼完成執行後延遲$ ajax調用
- 7. IOS-如何在segue完成後執行函數objective-c
- 8. 如何在當前演示文稿完成後執行segue
- 9. 方法完成後執行代碼
- 10. 執行代碼AFTER Recaptcha.reload()完成後
- 11. iPhone:UIDeviceOrientation變更完成後執行代碼
- 12. 任務完成後JavaFX執行代碼
- 13. C#在BackgroundWorker後執行一些操作RunWorker完成完成
- 14. 我想在完成另一個代碼後執行一個代碼
- 15. 芹菜鏈完成時執行一些代碼
- 16. 如何在完成另一個線程中的代碼塊後執行任務
- 17. 如何在所有線程完成後才執行一段代碼
- 18. 在完成Web服務調用後執行segue Swift3
- 19. 如何執行一些的jQuery或JavaScript代碼重定向已完成
- 20. 如何在上一篇文章完成後運行代碼?
- 21. startActivity完成後執行某些操作
- 22. AngularJS如何在某些功能完成後執行功能?
- 23. 如何在swift3完成5個文件下載請求後執行segue
- 24. 如何用NGRX改變狀態後執行一些代碼?
- 25. 成功完成JAAS登錄後執行代碼
- 26. Jquery - 在AJAX調用完成後確保代碼塊執行?
- 27. 執行代碼只有在下載完成後才解壓PHP
- 28. 在PHP中完成HTTP請求後執行代碼?
- 29. jQuery函數在執行完成後跳入jQuery源代碼
- 30. 是否可以在pool.map完成python作業後執行代碼?
沒有我期望的那麼糟糕。 'self.navigationController = self;'並添加該方法。我將控制器保存到基於Segue ID的局部變量中,然後將這些值與傳遞的ViewController進行比較。 –
這將適用於原始視圖控制器具有導航控制器的推送段,但在模態段的情況下該怎麼辦? – Drux
我使用了來自Levi的Segue自定義的答案,並且在這裏實現了我的'perform'像這樣的例子:http://stackoverflow.com/a/23778394/586489這很好用,我知道什麼時候push完成並且可以使用segues。 –