我有,我想回打電話給我的主要的應用程序,從而使調用服務器更新數據的部件。我調查了一下代表團,但是將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被調用調試器看到,但主要應用是沒有響應於它(不管它是在前景或背景)。我究竟做錯了什麼?
作爲一個方面說明,我這樣做的唯一原因是消除重複的代碼,我已經作出重新實現的東西需要。
我怕的就是這個。那就好了。我已經在使用NSUserDefaults了,我只是想做到這一點,所以我可以保證我的應用程序有最新的數據。猜猜我可以將背景刷新時間設置爲非默認值。除此之外,我不知道/無法想象得到最新的數據。 – David
他們運行的主要應用程序請求和發送數據! – deyanm