在 iPad 上打开新视图,然后关闭现有视图。
Posted
技术标签:
【中文标题】在 iPad 上打开新视图,然后关闭现有视图。【英文标题】:Open New view on iPad, and close existing view. 【发布时间】:2011-05-12 21:24:26 【问题描述】:我在 iPad 上打开了一个视图(View1,分配给 View1Controller)。我怎样才能让它打开 View2 (View2Controller) 并自行关闭......我确信它非常简单,但我正在管理弹出窗口并且找不到这么简单的东西。如果可能的话,动画过渡会更好。
感谢您的帮助
【问题讨论】:
【参考方案1】:这里是您可以完成此任务的一种方法的粗略概述。
假设您的 AppDelegate 中有名为 viewController1
和 viewController2
的属性(这些属性应该是 nonatomic, retain
以使内存管理更容易)。
当您想从viewController1
切换到viewController2
时,您需要删除以执行以下操作
// Remove the old view
[self.viewController1.view removeFromSuperView];
// Release it's controller (just to economize on memory)
self.viewController1.view = nil;
if(self.viewController2 == nil)
// Load the new controller from it's NIB/XIB
ViewController2* vc2 = [[ViewController2 alloc]
initWithNibName:@"ViewController2"
bundle:nil];
// Assign it to property & release to keep memory management clean
self.viewController2 = vc2;
[vc2 release];
// Add the new view controller to the window
[self.window addSubview:vc2];
通知 AppDelegate 切换视图的最简单方法之一是使用通知中心。
既然您在属性中保留了视图控制器,请不要忘记在您的dealloc
中释放它们。
希望这对您有所帮助。
【讨论】:
如果我的视图是在没有 nib 的情况下创建的,而是由代码创建的。 只需将 initWithNib 替换为您在问题中创建的ViewController1
和 ViewController2
。 (尽管即使视图是在代码中创建的,您也应该能够将 nil
传递给 initWithNibName
,这将导致您的控制器的 loadView
被调用,这是您应该创建编程视图的地方。以上是关于在 iPad 上打开新视图,然后关闭现有视图。的主要内容,如果未能解决你的问题,请参考以下文章
在关闭视图 iAds 在 ios 5 ipad 中变为黑色。(深黑色)
呈现一个新的视图控制器然后关闭它,调用父视图控制器上的 init()
为啥 iPad 不会在结束编辑时关闭选择器视图但 iPhone 会