我遇到了SplitViewController應用程序的問題。當我從主視圖中的表中選擇一行時,我將用替換segue替換詳細視圖。問題是每次發生這種情況時它會創建一個新實例/重新加載詳細視圖控制器。有沒有什麼辦法可以擁有它,所以如果它已經被實例化,它將用先前的實例替換細節視圖。我希望狀態能夠記住細節視圖,例如輸入到文本框中。替換segue創建新實例
1
A
回答
2
無法完成。一個SEGUE總是會創建一個視圖控制器
1
我用的是替代SEGUE,但在MasterVC我實現
-(BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
if ([identifier isEqualToString:@"showCalculatorViewController"]) {
if (self.splitViewController) {
NSObject *currentDetail = [self.splitViewController.viewControllers lastObject];
if ([currentDetail isKindOfClass:[RootCalcViewController class]]) {
....
然後我填寫現有VC的新特性,並返回NO。
但是我沒有UINAvigationController作爲我的初始Detail View控制器,因爲我處理的是masterVCs的導航。
此外,在AppDelegate中,didFinishLaunchingWithOptions需要設置正確的細節VC。生成的代碼假定它是一個UINavigationController。同樣在生成的MasterViewController中,viewDidLoad。這將爲您節省一些應用程序崩潰,如果你替換細節UINAvigationController。
當我加載不同的視圖控制器時,我讓「Replace segues」替換它們。
0
或者 - 你可以讓你的DetailController實現Singleton模式並將任何調用轉發給+ new,+ alloc或類似的東西給你的單例方法。
相關問題
- 1. segue創建視圖控制器swift的新實例
- 2. 用運行時創建的實例替換已經創建的實例
- 3. Java:創建新實例
- 4. 重新創建實例
- 5. 創建KClass的新實例
- 6. android.app.Application單例實例被重新創建
- 7. Push segue每次創建一個新的實例。我如何阻止?
- 8. 如何用新的Amazon EC2實例替換Amazon EC2實例?
- 9. 同時更新和創建新實例
- 10. 創建實例
- 11. 創建實例
- 12. 創建實例
- 13. 替換特定實例
- 14. 替換實例方法
- 15. ExecutorService - 在方法中創建新實例vs每個類創建一個實例
- 16. mysqli_fetch_object時創建新的對象實例
- 17. 在Android中創建新類的實例
- 18. 崩潰後創建新實例
- 19. @GeneratedValue當創建一個新的實例
- 20. AS3從藍圖創建新實例
- 21. 創建一個新的類實例
- 22. 添加架構或創建新實例?
- 23. ADF - 創建會話bean的新實例
- 24. CRM創建一個CrmConnection的新實例
- 25. 創建Pusher窗體的新實例javascript
- 26. 創建新實例失敗PHP
- 27. 如何創建記錄的新實例?
- 28. 創建控件的新實例動態
- 29. 使用新詞創建對象實例
- 30. Grails。 GORM。創建新實例時出錯
我剛剛開始與iPad故事板(包括拆分視圖控制器)一起工作,但是沒有可以使用替代替代的Push segue嗎?或者框架在這種情況下不允許Push?這適用於iPhone的成語。 – Rob 2012-04-03 19:14:21
我試圖推動,但決定我不想要後退導航。我記得每次都會創建一個新的實例。我有種解決它通過將每個細節ViewController聲明爲主ViewController上的一個屬性並在第一個segue上實例化它們。然後我不調用performSegue,而是手動推送/彈出實例到細節視圖。 – 2012-04-03 22:42:40
我也想知道如何使用替換segues。替代塞格和推塞格之間有什麼區別?如果替換的視圖控制器保留在內存中,那麼它如何被恢復? – Matt 2013-03-14 03:21:35