【发布时间】:2014-12-30 20:44:46
【问题描述】:
基本上我有 4 个普通的视图控制器,其中一个是保存主要内容的“主”视图控制器。其他三个用于检查通知,创建新内容等。问题是 - 我只想加载一次主视图控制器(当应用程序启动时),所以当我在视图控制器之间导航时,要到达'home' 控制器我只是从视图中删除当前控制器
[self dismissViewControllerAnimated:NO completion:nil];
这意味着主控制器必须始终落后于当前控制器。所以总结一下 - 当从家搬到三个控制器中的任何一个时,我用
加载控制器UIViewController *vc=[self.storyboard instantiateViewControllerWithIdentifier:@"RepliesView"];
[self presentViewController:vc animated:NO completion:nil];
当我从三个控制器中的任何一个移动到家时,我会关闭当前的视图控制器。如果我继续在主控制器和另一个控制器之间移动,这很好,但是当我从不在家的视图控制器移动到也不在家的视图控制器时会出现问题,所以基本上加载控制器同时需要然后关闭当前一个,以便加载的那个在后面有家庭控制器(因此可以被解雇回家)。到目前为止,我已经尝试过解散然后呈现
[self dismissViewControllerAnimated:NO completion:nil];
UIViewController *vc=[self.storyboard instantiateViewControllerWithIdentifier:@"RepliesView"];
[self presentViewController:vc animated:NO completion:nil];
但这给出了“视图不在窗口层次结构中!”警告并且出现的视图不是正在实例化的视图,而是主视图。如果有人可以提出解决方案,那就太棒了
【问题讨论】:
-
那个问题是你不能从你刚刚解散的视图控制器中呈现,所以你要么必须从你的主视图呈现视图,或者不是解散然后呈现,你可以简单地呈现第二个视图,但当您想返回时一次关闭两个视图控制器。
-
那么有没有办法可以从不同的视图控制器中关闭视图控制器,例如不是 [selfdismissView...] 而是 [aViewControllerdismiss...] ?
-
我认为你应该连续呈现 2 个然后直接关闭到主视图控制器。
-
因为后退两个视图控制器可以一步完成,而后退再前进则不行。
-
主视图控制器是第一个视图控制器吗?
标签: ios objective-c uiviewcontroller