2011-11-05 52 views
0

我放棄了,需要一些幫助。在新的xcode4.2中實現一個簡單的popover並捕獲dismissPopover事件

我試圖用故事板

我創建了一個故事板,並增加了一個圖是一個選擇器來實現xcode4一個簡單的選擇器酥料餅。我已將按鈕鏈接到視圖,並顯示帶有選取器的視圖。彈出選擇器彈出窗口,我可以選擇我想要的值。當我解僱流行病時,我沒有得到任何事件。之前在調用視圖中調用了「popoverControllerDidDismissPopover」方法。從這裏我可以執行任何post popover操作並檢索任何特定結果,我已經根據選擇器選擇計算出了具體結果。這在之前都是有效的。

使用什麼故事板時的「popoverControllerDidDismissPopover相當於」是

感謝

回答

0

我不知道的Xcode等同,因爲我是一個MonoTouch的用戶,但我知道的是,DidDismiss事件不是當你以編程方式解僱popover時發射(請參閱Apple documentation)。只有當用戶選擇另一個元素來解除彈出窗口時纔會調用它。

要在MonoTouch中解決此問題,我們必須繼承UIPopoverController的子類,添加我們自己的事件,重寫Dismiss方法,並在override方法中觸發新事件。通過這種方式,可以調用是否以編程方式或由用戶解散彈出窗口。

+0

謝謝。我試圖只使用標準工具,所以到目前爲止我沒有任何編程來消除popover,這一切都是通過故事板背景來完成的,這非常棒。我擔心我可能不得不沮喪,這似乎是一件很簡單的事情。 – 1961DarthVader

+0

我還沒有使用故事板功能,但從您的觀察/解釋中,我猜測它是以編程方式解散popover,因此不會觸發該事件。 –

4

讓您的視圖控制器「擁有」popover/segue實現UIPopoverControllerDelegate協議,並使用popoverControllerDidDismissPopover方法。另外,確保您的Segue在Interface Builder中分配了一個標識符。然後,實施prepareForSegue方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"MyPopoverSegueIdentifier"]) { 
    UIStoryboardPopoverSegue* popSegue = (UIStoryboardPopoverSegue*)segue; 
    popSegue.popoverController.delegate = self; 
    // also set any properties of the popover view controller itself: 
    // popSegue.destinationViewController.someProperty = xyz 
    } 
} 

現在按預期會收到popoverControllerDidDismissPopover消息。

+1

感謝您的回覆。我最終發現了一種方式,很大程度上取決於你上面描述的設置方式。然後在返回數據並同時整理彈出窗口時使用彈出窗口中的委託操作。但是,我從來沒有得到popoverControllerDidDismissPopover事件 – 1961DarthVader