2012-03-17 60 views
4

我在Xcode 4.3中創建了一個彈出窗口。 我沒有得到任何錯誤消息,但是當我點擊構建並運行,我按是應該打開酥料餅的屏幕按鈕,應用程序崩潰和綠線的亮點在我的代碼,並說:創建UIPopoverController

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

在此先感謝。這裏

回答

16

一些建議......

首先,您使用自動引用計數(ARC)?如果是,你需要有一個實例變量來控制你的UIPopoverController。例如:

@property (strong, nonatomic) UIPopoverController* popover; 

,如果你不使用ARC創建retain之一:

@property (retain, nonatomic) UIPopoverController* popover; 

在你有,因爲如果不這樣做的第一種情況下,ARC將發佈您剛纔創建的酥料餅在你的IBAction結束時。另外你可以這樣做,爲你的popover提供一個參考。看註釋。如果您不使用ARC,這也是有效的。

注意在某些時候,您可能需要釋放彈出窗口。例如,在- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController

self.popover = nil; 

然後,如果你SecondViewUIViewController調用它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]; 
} 
3

您傳遞到UIPopOverController的SecondView是UIView 。使其成爲UIViewController,因爲,UIPopOverController預計是UIViewController

-Suraj

2

確保你的iPad設備上模擬

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { 
    // We are using an iPhone 
    UIActionSheet *alertSheet = [[UIActionSheet alloc] initWithTitle:@"Where do you want to get your daily image?" delegate:(self) cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Camera", @"Library", nil]; 
    [alertSheet setTag:0]; 
    [alertSheet setDelegate:self]; 
    [alertSheet showFromTabBar:[[self tabBarController] tabBar]]; 
    [alertSheet release]; 
}else { 
    // We are using an iPad 
    /// here you should pass UIViewController inside the popover 
    /// follow @flexaddicted notes to implement the popover 
} 
4
-(IBAction)showpop:(id)sender 
{ 
UIPopoverController *pop = [[UIPopoverController alloc]initWithContentViewController:popoverview]; 
[pop setDelegate:self]; 
[pop presentPopoverFromRect:popbutton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 

} 
0

檢查下面鏈接,在IOS酥料餅教程

UIPopOverController Tutorial

+0

可以還添加了一些要點在回答 – 2015-11-18 10:04:22

+0

源代碼中的鏈接也存在於導師ial但上傳到G驅動器不上gist :) – 2015-11-19 05:08:57