我正在Xcode 4.3中创建一个弹出程序。我没有收到任何错误消息,但是当我单击build和run并按下应该打开弹出屏幕的按钮时,应用程序会崩溃,并在我的代码中用绿色高亮显示一行代码,并说:
线程1:断点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)];
}提前谢谢。
发布于 2012-03-17 17:10:45
这里没有什么建议..。
首先,您是否使用自动参考计数(ARC)?如果是,则需要有一个实例变量来控制UIPopoverController。例如:
@property (strong, nonatomic) UIPopoverController* popover;如果不使用ARC,请创建一个retain one:
@property (retain, nonatomic) UIPopoverController* popover;在第一种情况下,您必须这样做,因为如果没有,ARC将在您的IBAction末尾为您发布刚刚创建的弹出。此外,您这样做是为了为您的popover提供参考。见注。如果您不使用ARC,这也是有效的。
请注意,在某个时候,您可能有必要释放弹出。例如,在- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController中
self.popover = nil;然后,如果您的SecondView是一个UIViewController,那么就叫它SecondViewController。但这是一个简单的命名建议。
最后,显示来自动作发送方(例如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];
}发布于 2012-11-30 09:07:18
-(IBAction)showpop:(id)sender
{
UIPopoverController *pop = [[UIPopoverController alloc]initWithContentViewController:popoverview];
[pop setDelegate:self];
[pop presentPopoverFromRect:popbutton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}发布于 2012-10-11 09:24:24
您要传递给UIPopOverController的UIPopOverController是一个UIView。让它成为一个UIViewController,因为UIPopOverController所期望的是一个UIViewController。
-Suraj
https://stackoverflow.com/questions/9751424
复制相似问题