在PopOverController使用NavController SIGABRT错误

我已经发布了类似的问题之前,但这次我为分析一些代码。 我在我的AppDelegate.m文件中创建PopOverController和我加入,我想,这样使用我要推其他的意见传递给PopOverController.m文件NavigationController变量。 这里是我正在创建中的AppDelegate.m酥料饼

- (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的酥料饼我的TabBar项:

终止应用程序由于未捕获的异常'NSGenericException“,理由是:”内容视图控制器参数必须是与其相关的视图控制器层次的根。“

任何理由这是为什么出现? 有没有什么地方,我做我的代码中的错误呢?

--------------解决方案-------------

UINavigationController *navcon = [[UINavigationController alloc] initWithRootViewController:popoverContentController];

你正试图把一个酥料饼控制器导航控制器。 我不认为你想这样。

为了把导航酥料饼,你应该这样做,

UINavigationController *navcon = [[UINavigationController alloc] initWithRootViewController:myViewController];
popoverContentController = [UIPopoverController initWithContentViewController:navcon]

和init你想要的的viewController,像TableViewController或别的东西导航控制器。

分类:目标C 时间:2012-12-21 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.707 (s). 10 q(s)