Objective c 在PopOverController中使用NavController时发生SIGABRT错误
我以前也发布过类似的问题,但这次我提供了一些代码进行分析。我正在AppDelegate.m文件中创建PopOverController,并添加了一个NavigationController变量,希望将该变量传递给PopOverController.m文件,以便使用该变量推送其他视图。下面是我如何在AppDelegate.m中创建PopOver的Objective c 在PopOverController中使用NavController时发生SIGABRT错误,objective-c,ipad,ios5,xcode4.2,Objective C,Ipad,Ios5,Xcode4.2,我以前也发布过类似的问题,但这次我提供了一些代码进行分析。我正在AppDelegate.m文件中创建PopOverController,并添加了一个NavigationController变量,希望将该变量传递给PopOverController.m文件,以便使用该变量推送其他视图。下面是我如何在AppDelegate.m中创建PopOver的 - (void)tabBarController:(UITabBarController *)tabBarController didSelectVie
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if([viewController isKindOfClass:[SecondViewController class]]){
NSInteger index = [[self tabBarController] selectedIndex];
CGRect buttonFrame = [[[[[self tabBarController] tabBar] subviews] objectAtIndex:index+1] frame];
PopOverViewController *popoverContentController = [[PopOverViewController alloc]init];
UINavigationController *navcon = [[UINavigationController alloc]initWithRootViewController:popoverContentController];
popoverContentController.contentSizeForViewInPopover = CGSizeMake(250, 85);
popover = [[UIPopoverController alloc]initWithContentViewController:popoverContentController];
NSLog(@"X:%f Y:%f",buttonFrame.origin.x,buttonFrame.origin.y);
[popover presentPopoverFromRect:buttonFrame inView:self.tabBarController.tabBar permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
}
}
在我的PopOverController.m中,我尝试使用NavigationController选择如下视图:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
sendFeedback *sendEmailViewController = [[sendFeedback alloc]initWithNibName:@"sendFeedback" bundle:nil];
downLoad *downloadFilelViewController = [[downLoad alloc]initWithNibName:@"downLoad" bundle:nil];
if (indexPath.row == 0)
[self.navigationController pushViewController:sendEmailViewController animated:YES];
else
[self.navigationController pushViewController:downloadFilelViewController animated:YES];
}
但是,当我点击我的弹出框选项卡项时,我收到了以下SIGABRT消息:
由于未捕获的异常“NSGenericeException”而终止应用程序,原因:“内容视图控制器参数必须是其关联视图控制器层次结构的根。”
为什么会出现这种情况?我的代码中有什么地方出错了吗
UINavigationController *navcon = [[UINavigationController alloc] initWithRootViewController:popoverContentController];
您正在尝试将popover控制器放入导航控制器中。我想你不想要这个
要在popover中放置导航,您应该这样做
UINavigationController *navcon = [[UINavigationController alloc] initWithRootViewController:myViewController];
popoverContentController = [UIPopoverController initWithContentViewController:navcon]
使用所需的viewController初始化导航控制器,如TableViewController或其他
您正在尝试将popover控制器放入导航控制器中。我想你不想要这个
要在popover中放置导航,您应该这样做
UINavigationController *navcon = [[UINavigationController alloc] initWithRootViewController:myViewController];
popoverContentController = [UIPopoverController initWithContentViewController:navcon]
使用所需的viewController初始化导航控制器,如TableViewController或其他内容。您好,谢谢您的回答,我还有一个问题要问。这是关于我需要初始化的viewController,我有两个viewController,即FirstVC和SecondVC,这两个viewController有两个选项卡项。当我单击第二个选项卡项时,弹出弹出弹出窗口,在该弹出窗口中,我有一个表视图,它作为两个项,单击该项将导致另两个ViewController,具体取决于选定的行。所以我想展示一下这个VC来自我的PopOver。那么我应该使用NavigationController初始化哪个ViewController。如果你能回答我会很有帮助的嗨,谢谢你的回答,我还有一个问题要问。这是关于我需要初始化的viewController,我有两个viewController,即FirstVC和SecondVC,这两个viewController有两个选项卡项。当我单击第二个选项卡项时,弹出弹出弹出窗口,在该弹出窗口中,我有一个表视图,它作为两个项,单击该项将导致另两个ViewController,具体取决于选定的行。所以我想展示一下这个VC来自我的PopOver。那么我应该使用NavigationController初始化哪个ViewController。如果你能回答,我会很有帮助的