我很困惑你的问题在哪里。你想做什么是可能的,应该是直截了当的。如果您的问题是Next视图没有被推送,因为在popoverController中,您无权访问self.navigationController
。如此简单的解决方案,创建一个UINavigationController变量并将navigationController传递给您的popover或使用通知来传递推回到您的AppDelegate的视图。
编辑
您可以使用此侦听通知:
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(popOverViewControllerSelected:) name:@"popOverViewSelectedViewToPush" object:someObjectTellingYouWhatViewToPush];
然后用它来发送通知:
[[NSNotificationCenter defaultCenter] postNotificationName:@"popOverViewSelectedViewToPush" object:@"ViewController1"];
的选择将是你的函数名(我只是把一个描述性的名字“popOverViewControllerSelected”)和对象需要是什么viewController的信息推(即1,2,3或@“view1”)。然后,你将需要:
- (void)popOverViewControllerSelected:(id)sentObject
{
// If your passing an NSNumber could use a switch
switch ((int)sentObject) {
case 0:
//Push This view
break;
case 1:
//Push that view
break;
case 2:
//Push someother view
break;
default:
break;
}
}
我说的是另一种方式是在你popOverViewController.h加入
@interface .........
{
UINavigationController *navController;
}
@property (nonatomic, retain) UINavigationController *navController;
在你popOverViewController.m添加:
@synthesize navController;
然后在哪里添加popOverViewController只需添加:
[popOverViewController setNavController:self.navigationController];
现在在你的PopOverViewController您可以拨打:
[navController pushViewController:someViewController animated:YES];
但我建议做第一个选项。
除非您为它创建自己的用户界面,否则不需要创建PopOverController的子类。 – twilson 2012-02-07 16:58:21
看看苹果的iPad人机界面指南文档,它确实应该完全足以实现你想要的。它似乎微不足道,除非我失去了一些东西? – twilson 2012-02-07 16:59:29