2012-03-21 55 views
0

我试图展示一个按钮barButton时popoverView。不幸的是,每次我尝试调用它时,该应用程序都会与SIGABRT信号崩溃。 “Empty.xib”确实有一个设计的视图。 (当我使用barButton时,我无法使用该框架,如果您有解决方法,请说明)。UIPopoverController - SIGABRT当呈现

- (IBAction)loadPopover:(id)sender 
{ 
    UIView *someView = [[UIView alloc] init]; 
    UIViewController *someVC = [[UIViewController alloc] initWithNibName:@"Empty.xib" bundle:[NSBundle mainBundle]]; 
    UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:someVC]; 

    someView.frame = CGRectMake(0, 44, 320, 372); 
    someView.backgroundColor = [UIColor lightGrayColor]; 

    popoverController.delegate = self; 

    self.popoverView = popoverController; 

    [self.popoverView presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
    // CGRect popoverRect = [self.view convertRect:[btn frame] fromView:[btn superview]]; 

    CGRect popoverRect = CGRectMake(0, 88, 320, 311); 

    popoverRect.size.width = MIN(popoverRect.size.width, 100); 
    [self.popoverView presentPopoverFromRect:popoverRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];  
} 
+0

当您到达代码的最后一行时,会发生崩溃吗? – dasblinkenlight 2012-03-21 21:25:27

+0

我实际上并不知道什么时候发生了崩溃,我只是在main.m上得到了接收到的信号。 – user1222053 2012-03-21 21:32:46

+0

发件人是UIBarbuttonitem吗? – CodaFi 2012-03-21 21:36:30

回答

0

这里有几点建议。

  1. 检查是否view的出口连接

  2. 为什么你需要分配一个UIView像下面? UIView *someView = [[UIView alloc] init];

  3. 检查发件人的类型是UIBarButtonItem

  4. 的是什么self.popoverView的保留政策?检查它是否为retainstrong(如果是ARC)

  5. 为什么要提交两次popover?

说这个,这里是一个简单的片段。

UIBarButtonItem* barButton = (UIBarButtonItem*)sender; 

UIViewController *someVC = [[UIViewController alloc] initWithNibName:@"Empty" bundle:[NSBundle mainBundle]]; 

UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:someVC]; 

popoverController.delegate = self; 

self.popoverView = popoverController; 

[self.popoverView setPopoverContentSize:CGSizeMake(300, 200)]; 

[self.popoverView presentPopoverFromBarButtonItem:barButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

P.S.如果不使用ARC,请关注内存。

希望它有帮助。

0

删除.xib部分来自initWithNibName:@"Empty.xib"。改线到这一点:

UIViewController *someVC = [[UIViewController alloc] initWithNibName:@"Empty" bundle:nil]; 

编辑:
here -

笔尖文件名不能包含任何领先的路径信息。