gpt4 book ai didi

objective-c - 创建一个 UIPopoverController

转载 作者:可可西里 更新时间:2023-11-01 05:00:56 27 4
gpt4 key购买 nike

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

Thread 1: breakpoint 2.1..

这是什么意思,我该如何解决?

- (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)];
}

提前致谢。

最佳答案

这里有一些建议......

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

@property (strong, nonatomic) UIPopoverController* popover;

如果您不使用 ARC,请创建一个保留:

@property (retain, nonatomic) UIPopoverController* popover;

在第一种情况下,您必须这样做,因为否则,ARC 将在您的 IBAction 结束时为您释放刚刚创建的弹出窗口。此外,您这样做是为了为您的弹出窗口提供引用。看注释。如果您不使用 ARC,这也有效。

注意 在某些时候您可能需要释放弹出框。例如在 - (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController

self.popover = nil;

然后,如果您的 SecondView 是一个 UIViewController,则调用它 SecondViewController。但这是一个简单的命名建议。

最后,从 Action 发送者(例如 UIButton)显示弹出窗口的正确方法,而不是硬编码位置,可能是:

- (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];
}

关于objective-c - 创建一个 UIPopoverController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9751424/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com