替换segue创建新实例

时间:2012-04-03 14:00:40

标签: ios5 uisplitviewcontroller segue

我遇到了SplitViewController应用程序的问题。当我从主视图中的表中选择一行时,我正在用替换segue替换详细视图。问题是每次发生这种情况时都会创建一个新实例/重新加载详细视图控制器。我有什么方法可以拥有它,所以如果它已经被实例化,它将用前一个实例替换详细视图。我希望记住详细视图的状态,例如输入到文本字段中。

3 个答案:

答案 0 :(得分:2)

无法完成。 segue将始终实例化视图控制器

答案 1 :(得分: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 Controller,因为我处理了masterVCs的导航。

另外,在AppDelegate中,didFinishLaunchingWithOptions需要设置VC的正确细节。生成的代码假定它是UINavigationController。同样在生成的MasterViewController中,viewDidLoad。如果您替换详细信息UINAvigationController,这将为您节省一些应用程序崩溃。

当我加载不同的视图控制器时,我让“替换segues”替换它们。

答案 2 :(得分:0)

或者 - 你可以让你的DetailController实现Singleton模式,并将对+ new,+ alloc等的任何调用转发给你的单例方法。