0

我正在寻找一种能够在另一个模式视图控制器之后显示一个模式视图控制器的方法,并在第一个模式消失时让第二个出现。

问题是在第一个 modalviewcontroller 内部完成的解除调用适用于两者,并且从未显示 SecondController。

在父调用之前或之后放置第一次关闭不会改变任何内容。如果第一次关闭设置为 animate=NO,则一切正常。但我需要动画。

我计划这样做,但问题是在第一个 modalviewcontroller 内完成的解除调用适用于两者,并且从未显示 SecondController。

我不明白为什么因为每个模态视图都有自己的导航控制器,所以它们不应该发生冲突。

我尝试了另一种方法,在 0.5 秒后使用 NSTimer 显示第二个模态视图,但这并不令人满意:当第一个完全消失时,第二个出现。一点都不流畅...如果我将延迟设置为小于 0.5 秒,则第二个模态视图永远不会出现。而使用这样的计时器来做这件事似乎并不是一种好的编码方式。

主程序

- (void) entry {

    FirstController *nextWindow = [[FirstController alloc] initWithNibName:@"theNIB" bundle:nil];

    nextWindow.caller = self;

    UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:nextWindow];

    [self.navigationController presentModalViewController:navController animated:YES];

    [nextWindow release];
    [navController release];
}


- (void) thingsDoneInFirstModalController:(OBJECT)returnValue retval2:(OBJECT2)returnValue2 {
    [self display2ndController];
}

- (void) display2ndController {

    SecondController *nextWindow;

    nextWindow = [[SecondController alloc] initWithNibName:@"NIB2" bundle:nil];

    UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:nextWindow];
    [self.navigationController presentModalViewController:navController animated:YES];
    [navController release];
    [nextWindow release];
}

第一个 ModalViewController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    [self.navigationController dismissModalViewControllerAnimated:YES];
    [self.caller thingsDoneInFirstModalController:theResult retval2:someMoreResult];
}

您是否知道一种使这成为可能的方法(使第二个视图在第一个视图消失时出现),例如一些代码?

谢谢你。

4

1 回答 1

0

尝试创建一些虚拟的 ViewController,并使用它展示你的第二个。

于 2011-01-25T16:33:33.650 回答