0

我有一个弹出框,它有一个主视图,用于从几个子视图中进行选择,当用户在弹出框外部点击并关闭窗口时,我想将弹出框重置为主视图。

例如,主弹出视图具有选项、类别、单词列表和结果。我想这样做,以便用户下次调用弹出框时,他们会转到主视图,而不是回到他们上次关闭弹出框时所在的视图。

如果我只有一层深,我可以使用

- (void)viewWillDisappear:(BOOL)animated {
    [[self navigationController] popToRootViewControllerAnimated:YES];
    [super viewWillDisappear:animated];
}

但是,如果我在层次结构中很深,例如 WordList:Category:Words 我不能在 WordList 或 Category 中弹出到根目录,因为当视图消失时,我想进入下一个级别。如果我使用上面列出的代码,我无法降低一个级别。我弹出到根视图。

我想要的是能够告诉弹出视图在它被解雇时弹出到它的根。像这样的东西:

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
    [[self popover] popToRootViewControllerAnimated:YES];
    [self.popoverController dismissPopoverAnimated:YES];

}

有什么想法吗?

4

2 回答 2

0

初始化弹出框时,我测试它是否已经存在。如果是这样,我跳过初始化并直接进入弹出窗口。这就是为什么当弹出框被关闭时,它会停留在用户离开它的任何视图中。

为了让它从第一个视图开始,我只需要将弹出框设置为 nil。

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popOverController {

    [self.popoverController dismissPopoverAnimated:YES];
    self.popoverController = nil;

现在,当用户调用弹出框时,它会创建一组新的视图,从主菜单开始。

于 2012-07-20T16:08:16.137 回答
0

我相信你想要的是 UIPopoverController 的contentViewController属性,它将是你初始化弹出框的任何视图控制器——很可能是导航控制器。这个...

[self.popover.contentViewController popToRootViewControllerAnimated:YES];

...应该为您解决问题。

于 2012-07-20T00:22:06.603 回答