首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建UIPopoverController

创建UIPopoverController
EN

Stack Overflow用户
提问于 2012-03-17 15:56:51
回答 5查看 29.2K关注 0票数 4

我正在Xcode 4.3中创建一个弹出程序。我没有收到任何错误消息,但是当我单击build和run并按下应该打开弹出屏幕的按钮时,应用程序会崩溃,并在我的代码中用绿色高亮显示一行代码,并说:

线程1:断点2.1.

这意味着什么,我该如何解决呢?

代码语言:javascript
运行
复制
- (IBAction)popOver
{
    SecondView *secondview = [[SecondView alloc] init];
    UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:secondview];    

    [popover setDelegate:self];    

    [popover presentPopoverFromRect:CGRectMake(801, 401, 300, 200) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
    [popover setPopoverContentSize:CGSizeMake(300, 200)];   
}

提前谢谢。

EN

回答 5

Stack Overflow用户

发布于 2012-03-17 17:10:45

这里没有什么建议..。

首先,您是否使用自动参考计数(ARC)?如果是,则需要有一个实例变量来控制UIPopoverController。例如:

代码语言:javascript
运行
复制
@property (strong, nonatomic) UIPopoverController* popover;

如果不使用ARC,请创建一个retain one:

代码语言:javascript
运行
复制
@property (retain, nonatomic) UIPopoverController* popover;

在第一种情况下,您必须这样做,因为如果没有,ARC将在您的IBAction末尾为您发布刚刚创建的弹出。此外,您这样做是为了为您的popover提供参考。见注。如果您不使用ARC,这也是有效的。

请注意,在某个时候,您可能有必要释放弹出。例如,在- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController

代码语言:javascript
运行
复制
self.popover = nil;

然后,如果您的SecondView是一个UIViewController,那么就叫它SecondViewController。但这是一个简单的命名建议。

最后,显示来自动作发送方(例如UIButton)的弹出窗口的正确方法,而不是硬编码位置,可以是:

代码语言:javascript
运行
复制
- (IBAction)openPopover:(id)sender
{
    // create the popover here...

    UIButton* senderButton = (UIButton*)sender;

    [popover setPopoverContentSize:CGSizeMake(300, 200)];
    [popover presentPopoverFromRect:senderButton.bounds inView:senderButton permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
}
票数 16
EN

Stack Overflow用户

发布于 2012-11-30 09:07:18

代码语言:javascript
运行
复制
-(IBAction)showpop:(id)sender
{
UIPopoverController *pop = [[UIPopoverController alloc]initWithContentViewController:popoverview];
[pop setDelegate:self];
[pop presentPopoverFromRect:popbutton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

}
票数 4
EN

Stack Overflow用户

发布于 2012-10-11 09:24:24

您要传递给UIPopOverControllerUIPopOverController是一个UIView。让它成为一个UIViewController,因为UIPopOverController所期望的是一个UIViewController

-Suraj

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9751424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档