我从PopOver中选择了正确的视图,但没有在父视图中显示,而是在PopOverView中显示。
以下是一些截图:
在我选择反馈选项后,在我的父视图中显示视图,在我的情况下是SecondViewController(灰色背景屏幕),它显示在PopOver本身。
有关信息,我有三个VC,即每个分配给每个TabBar项目的FirstViewController,SecondViewController和ThirdViewController。我想让SecondViewController成为PopOver的父级。
这是我在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:navcon];
NSLog(@"X:%f Y:%f",buttonFrame.origin.x,buttonFrame.origin.y);
[popover presentPopoverFromRect:buttonFrame inView:self.tabBarController.tabBar permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
}
}
我的PopOverController.m中的代码,我可以选择要显示的新视图
- (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];
}
任何人都可以让我知道如何引用我的父视图(SecondViewcontroller),以便新视图显示在我的父视图而不是弹出视图中。
由于
答案 0 :(得分:0)
你插入到popover UINavigationController并在didSelectRowAtIndexPath
中将新创建的控制器推送到已存在的堆栈(进入popover UINavigationController),但不进入标签栏。
为了将新创建的控制器推送到第二个选项卡,您需要将第二个选项卡(现在是SecondViewController)分配给新的UINavigationController并使用此导航堆栈。
代码将如下所示:
UINavigationController *navController = (UINavigationController*)[tabBarController.viewControllers objectAtIndex:1];
[navController pushViewController:downloadFilelViewController animated:YES];