【问题标题】:UINavigationController with presentModalViewControllerUINavigationController 与 presentModalViewController
【发布时间】:2010-12-10 00:38:03
【问题描述】:

我有一个实现UINavigationController 的菜单屏幕,在该屏幕顶部,使用presentModalViewController,我放置了另一个屏幕,我希望在该屏幕上拥有另一个UINavigationController。我试图实现另一个导航控制器来处理新屏幕,但我要么在屏幕下方的 1/8 处得到一个导航栏,要么崩溃或什么都没有。我也尝试过[[UINavigationController alloc] initWithRootViewController:navigationConroller],但也没有成功。我只是使用pushViewController 尝试将下一个笔尖放在不起作用的堆栈上。我做错了什么?

【问题讨论】:

  • 在您发布代码以显示您在做什么之前,您可能不会收到任何回复。

标签: iphone uinavigationcontroller presentmodalviewcontroller


【解决方案1】:

虽然有很多人在论坛上说苹果不允许这样做,但我已经让它工作了。你要做的是:

Map *mapScreen = [[[Map alloc] init] autorelease];
mapScreen.delegate = self;

UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:mapScreen] autorelease];

[self presentModalViewController:navController animated:YES];

【讨论】:

  • 这也是我使用的方法,UINavigationController 只是 UIViewController 的子类,你可以用它做所有与 UIViewController 相同的事情。
  • 这是 Apple 在 iOS 的 View Controller Programming Guide: Modal View Controllers 中描述的技术。也许人们在评论您不必要地使用自动释放。使用 presentModalViewController 时:mapScreen 和 navController 都是 self 保留的,可以通过 self.modalViewController 访问,所以你可以也应该马上释放。
  • 嗯?这只是一个例子,我通常不使用自动释放,但为了方便我把它放在这里作为自动释放的例子,意味着人们知道它应该被释放。这也很古老,当时大多数论坛都说你做不到,因此答案中的第一个声明。
猜你喜欢
  • 1970-01-01
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-12
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多