2015-04-12 59 views
1

我有,我想回打電話給我的主要的應用程序,從而使調用服務器更新數據的部件。我調查了一下代表團,但是將widget的視圖控制器註冊爲代表並不實際。所以我開始嘗試使用NSNotificationCenter。我已經設置好了,但選擇器沒有被調用。在我的主iOS應用程序中,我在viewDidLoad方法中有這個。使用NSNotificationCenter從擴展小部件中調用主應用中的方法?

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(loadNewData:) 
               name:kUpdateData 
               object:nil]; 

而在該文件的底部,我有這樣的:

/** 
* Updates the table when the today widget is called for updated info 
**/ 
- (void)loadNewData:(NSNotification *) notification 
{ 
    [self loadTableData]; 
} 

那是我主要的應用程序。現在,在我的通知中心插件/擴展,我做這樣的判斷:

[[NSNotificationCenter defaultCenter] 
postNotificationName:kUpdateData 
object:nil]; 

的postNotificationName傳遞中,`kUpdateData」,是決心@‘了updateData’常數。我可以在該方法postNotificationName被調用調試器看到,但主要應用是沒有響應於它(不管它是在前景或背景)。我究竟做錯了什麼?

作爲一個方面說明,我這樣做的唯一原因是消除重複的代碼,我已經作出重新實現的東西需要。

回答

0

據我所知延伸着的訪問,或致電主應用程序的方法......有什麼可以做的是要麼做擴展服務器執行或共享NSUserDefault設定的值,所以當你的應用程序被帶到前臺,您可以檢查此價值,並與服務器連接一致。

+0

我怕的就是這個。那就好了。我已經在使用NSUserDefaults了,我只是想做到這一點,所以我可以保證我的應用程序有最新的數據。猜猜我可以將背景刷新時間設置爲非默認值。除此之外,我不知道/無法想象得到最新的數據。 – David

+0

他們運行的主要應用程序請求和發送數據! – deyanm