我对您的问题出在哪里有点困惑。您尝试做的事情是可能的,并且应该是直截了当的。如果您的问题是 Next 视图没有被推送,因为在 popoverController 中您无权访问self.navigationController。如此简单的解决方案,创建一个 UINavigationController 变量并将 navigationController 传递给您的弹出框或使用通知将要推送回您的 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];
但我建议做第一个选项。