我遇到了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. 创建KClass的新实例
- 3. 如何用新的Amazon EC2实例替换Amazon EC2实例?
- 4. 创建实例
- 5. 创建实例
- 6. 创建实例
- 7. 替换实例方法
- 8. ExecutorService - 在方法中创建新实例vs每个类创建一个实例
- 9. ADF - 创建会话bean的新实例
- 10. Kivy创建小工具的新实例
- 11. 创建新的数组实例
- 12. Castle Windsor重新创建实例
- 13. 如何创建记录的新实例?
- 14. 获取新创建的实例
- 15. 重新创建实体单例
- 16. 模拟最终的新实例创建?
- 17. 创建新的实例对象
- 18. 模拟新创建的实例?
- 19. 在Android中创建新类的实例
- 20. 在基类中重新创建实例
- 21. 添加架构或创建新实例?
- 22. 意图打开URL创建新实例
- 23. AS3从蓝图创建新实例
- 24. 不创建新的Backgroundworker实例 - C#
- 25. 通用T - 创建新实例
- 26. 切换视图控制器而不创建新实例
- 27. 创建新的泛型类型实例转换为根类型?
- 28. 基于现有实例创建类的新实例
- 29. StructureMap创建实例
- 30. 创建EC2实例
我刚刚开始与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