UIPopoverController?在弹出式控制器外部敲击时无法解除

时间:2012-10-22 23:56:05

标签: iphone objective-c ipad uipopovercontroller

在将项目更改为通用应用程序并切换到Xcode的更新版本后,我遇到了一个问题。

目前,我的应用程序有一个导航栏,控制器有一个按钮。当用户单击它时,该按钮将弹出UIPopoverController。这里一切都很好。现在我尝试与UIPopoverController中的列表进行交互,列表中根本没有任何反应。此外,当我尝试通过点击弹出控制器外部来解除弹出控制器时,弹出窗口完全消失,我甚至可以交换弹出控制器后面的控件。

在我将Xcode更新到最新的IOS之前,它运行良好。我改变的代码内部是让xib文件有窗口视图,在app委托文件中我初始化了xib文件。

这显示在下面的代码中。

TViewController* controller = [[TController alloc] initWithNibName:@"MainViewController_IPad" bundle:NULL];
[controller.navigationController setNavigationBarHidden:TRUE animated:TRUE];
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
[self.window setRootViewController:controller];
[self.window makeKeyAndVisible];

//((TopicShowViewController*)self.window.rootViewController).navigationController.navigationBarHidden = true;
self.navigationController = ((TopicShowViewController*)self.window.rootViewController).navigationController;
self.navigationController.navigationBarHidden = true;
[controller release];

上面的代码,我必须创建窗口对象,但TViewController本身已经有一个窗口对象。如果我在xib文件中没有任何一个window对象的情况下运行它,或者从上面的代码中显式初始化了window对象,那么TViewController将不会按预期显示。

我不知道这里出了什么问题...抱歉描述可能太长,无法理解,但请帮忙。

1 个答案:

答案 0 :(得分:1)

通用应用程序是一款专为在iPhone和iPad上运行而设计的应用程序。但是,iPhone不支持UIPopoverController。如果您尝试在iPhone上打开弹出窗口,您的应用程序将抛出异​​常。