我有图像选择器,它收集另一个视图控制器的数据(来自three20的TTMessageController),我希望这个消息编辑器出现在图像选择器后面,所以当图像piker滑出时,将会出现带有预填充数据的消息控制器。
像这样的代码
[self.navigationController presentModalViewController:composeController animated:NO];
[picker dismissModalViewControllerAnimated:YES];
反之亦然。该怎么办?如何在composeController
控制器后面显示picker
?
提前致谢。
答案 0 :(得分:0)
修改强>
好吧我认为这里的问题是模态位,因为iPhone看起来不像你有2个视图设置为模态,甚至是从一个模态视图到另一个模式视图的动画。
他们肯定必须是模态的吗?如何将它们添加到普通导航堆栈?
您可以先将消息视图添加到堆栈中(非动画),这样当您弹出消息视图时,它就会存在。
试试这个:
向堆栈添加视图的顺序会影响它们在关闭它们时显示的顺序。
这部分将composeController添加到堆栈中,然后为顶部的选择器设置动画。使用此代码显示选择器控制器(即而不是模态对话框):
[self.navigationController pushViewController:composeController animated:NO];
[self.navigationController pushViewController:picker animated:YES];
然后,当您完成选择器后,您可以将视图“弹出”回消息编写器:
[self.navigationController popViewControllerAnimated:YES];
您现在应该没有引用代码中剩余的任何模态对话框。我相信这应该比modal更好,它实际上是用于在每个其他视图上方显示一个视图,而不是从视图切换到视图。
希望有所帮助!
答案 1 :(得分:0)
实际上从viewController帮助中删除动画。
[picker dismissModalViewControllerAnimated:NO];
[self presentModalViewController:composeNavController animated:NO]; // If YES it crashes
但是,如果得到我的意思,那就不是iPhone-ish,即使是淡出黑色或只是一些视觉效果会使它看起来更好,更好。从技术上讲,它有效。
答案 2 :(得分:0)
您可以关闭图像选择器模态视图控制器,推送Message控制器(两者都带有动画:NO),然后使用CATransition执行您自己的Cocoa类动画,而不是尝试在选择器后面显示另一个viewController。图像选择器动画离开屏幕。
答案 3 :(得分:0)
您需要将这些动画分开,以便它们不会在同一个runloop中执行。我遇到了这样一种情况:操作系统不喜欢将模态视图连接到背后。
试试这个:
- (void)myCallbackMethod{
[picker dismissModalViewControllerAnimated:YES];
[self performSelector:@selector(presentMessage) withObject:nil afterDelay:0.25];
}
- (void)presentMessage{
[self.navigationController presentModalViewController:composeController animated:YES];
}