2014-01-21 87 views
0

在iPad模擬器上,我有一個ViewController A提供了一個UIPopoverController,其contentViewController是ViewController B,其中我有一個按鈕來關閉UIPopoverController。UIPopoverController:更新視圖後,它被解僱

當它被駁回,我需要更新的ViewController A的視圖控制器基於某些領域B.

視圖爲了做到這一點,我聲明視圖控制器A作爲的屬性(weakref)視圖控制器B,使用視圖控制器B,其中解聘的酥料餅內,我可以說:

[self.viewControllerA.popover dismissPopoverAnimated:YES]; 
self.viewControllerA.popover = nil; 
self.viewControllerA.textLabel.text = self.someField 

這是做它的正確方法是什麼?既然沒有回調,我們實事求是地解決流行的問題,我想不出更好的解決方案。

有人有更好的主意嗎?傳遞視圖控制器對我來說似乎很尷尬。

回答

0

最好的辦法是使用Delegation,只是聲明委託在控制器B樣

@protocol ControllerSDelegate <NSObject> 
-(void) hidePopoverDelegateMethod; 
@end 

,並把這種行動傳遞數據和類似

if (_delegate != nil) { 
    [_delegate hidePopoverDelegateMethod]; 
} 
控制器解僱

在你的控制器中你可以處理這個del egate call

-(void) hidePopoverDelegateMethod { 
    [self.paymentPopover dismissPopoverAnimated:YES]; 
    if (self.paymentPopover) { 
     self.paymentPopover = nil; 
    } 
    [self initializeData]; 
} 
0

我認爲,代表或發送NSNotification會更好。

注:

的執行順序會做更多的完善到您當前密碼的改變。

self.viewControllerA.textLabel.text = self.someField 
[self.viewControllerA.popover dismissPopoverAnimated:YES]; 
self.viewControllerA.popover = nil; 
+0

我寧願委派通知,因爲只有一個對象應該被通知。 – bohanl

+0

直接調用-dismissPopoverAnimated:時不會調用它。 – bohanl