簡體   English   中英

UIPopoverController-出現時的SIGABRT

[英]UIPopoverController - SIGABRT when Presented

我試圖在按下barButton時顯示popoverView。 不幸的是,每次我嘗試調用該應用時,該應用都會崩潰並顯示信號SIGABRT。 “ Empty.xib”確實具有其中設計的視圖。 (由於我正在使用barButton,因此我無法使用該框架,如果您有解決方法,請也這么說)。

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

這里沒有什么建議。

  1. 檢查view的插座是否已連接

  2. 為什么需要分配如下的UIView UIView *someView = [[UIView alloc] init];

  3. 檢查發送者是否為UIBarButtonItem類型

  4. self.popoverView的保留政策是self.popoverView 檢查其是否retainstrong (如果是ARC)

  5. 您為何兩次提出彈出式窗口?

這樣說,這里是一個簡單的片段。

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

PS如果不使用ARC,請注意內存。

希望能幫助到你。

initWithNibName:@"Empty.xib"刪除.xib部分。 將行更改為此:

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

編輯:
這里 -

筆尖文件名不應包含任何前導路徑信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM