Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在PopOverController中使用NavController时发生SIGABRT错误_Objective C_Ipad_Ios5_Xcode4.2 - Fatal编程技术网

Objective c 在PopOverController中使用NavController时发生SIGABRT错误

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

我以前也发布过类似的问题,但这次我提供了一些代码进行分析。我正在AppDelegate.m文件中创建PopOverController,并添加了一个NavigationController变量,希望将该变量传递给PopOverController.m文件,以便使用该变量推送其他视图。下面是我如何在AppDelegate.m中创建PopOver的

- (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。如果你能回答,我会很有帮助的