Ios UIABBARCONTROLLER中的UIPOPCOVERCONTROLLER仅工作一次
现在我正在开发一个iPad应用程序,其中有一个Ios UIABBARCONTROLLER中的UIPOPCOVERCONTROLLER仅工作一次,ios,ipad,uipopovercontroller,Ios,Ipad,Uipopovercontroller,现在我正在开发一个iPad应用程序,其中有一个UITabBarController,有9个视图控制器和9个UITabBarItems。当我单击一个名为“ET”的项目时,一个UIPopoverController出现在uitabaritem上方,第一次一切都很好,在我单击popover之外的其他地方使其消失后,我再次单击“ET”它就不工作了。经过一些调试后,我发现应该显示在popover控制器中的视图控制器已从UITabBarController中删除。ViewController,现在UITab
UITabBarController
,有9个视图控制器和9个UITabBarItems
。当我单击一个名为“ET”的项目时,一个UIPopoverController
出现在uitabaritem
上方,第一次一切都很好,在我单击popover之外的其他地方使其消失后,我再次单击“ET”它就不工作了。经过一些调试后,我发现应该显示在popover控制器中的视图控制器已从UITabBarController中删除。ViewController
,现在UITabBarController
只有8个视图控制器。我不知道我从哪里删除了它,这是我显示popover控制器的代码
-(void) PopViewController:(UIViewController*)pVC rect:(CGRect)rect type:(int)nType
{
if (pVC == NULL)
return;
[self PushViewController:NULL type:0];
GTJAMyNavigatorViewController* navigationController = [[GTJAMyNavigatorViewController alloc] initWithRootViewController:pVC];
[navigationController setNavigationBarHidden:YES animated:NO ];
if ([pVC isKindOfClass:[TZTUIETViewController class]]) {
self.popoverVC = [[UIPopoverController alloc] initWithContentViewController:navigationController];
}
self.popoverVC.delegate = self;
[navigationController setPopover:self.popoverVC];
[self.popoverVC presentPopoverFromRect:rect
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionDown
animated:YES];
NSLog(@"%d",[self.popoverVC retainCount]);
}
下面是Disclease委托方法的代码
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
if (self.popoverVC && self.popoverVC == popoverController)
{
[((TZTUITabBar*)self.tabBar) UndoSelect];
[self.popoverVC release];
self.popoverVC = NULL;
}
NSLog(@"%d",[self.popoverVC retainCount]);
return;
}
我把self.popoverVC变成了强大的财产,有人能帮忙吗?谢谢 如果([pVC isKindOfClass:[TZTUIETViewController class]])为真,您确定第二次是真的吗?视图控制器只能有一个父级,因此当您将其设置为弹出窗口中显示的导航控制器的根视图控制器时,它会隐式地从选项卡视图控制器中删除。谢谢大家。但如何解决这个问题呢?一旦我直接将pVC设置为popover的内容视图控制器,它会报告“由于未捕获的异常“NSGenericeException”而终止应用程序,原因是:“内容视图控制器参数必须是其关联的视图控制器层次结构的根。”,因此我必须使用导航控制器@omzNo,您必须使用不同的视图控制器(属于同一个类)。您的意思是将pVC更改为另一个同样属于TZTUIETViewController类的VC?