2012-03-21 56 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 -

筆尖文件名不能包含任何領先的路徑信息。