2012-02-06 76 views
0

在我的項目中,我向用戶顯示一個提醒,指出一個'空列表'。 現在,我在AppDelegate>applicationDidBecomeActive中展示它。 我這樣做是因爲我希望警報顯示應用程序啓動時以及從背景中出來(iOS 4.2到5.x)時列表是否爲空 。何時顯示啓動警報並退出背景?

編輯:

我使用的方法在AppDelegate中,並有輕微的延遲調用它,我仍然得到這個通知。 [self performSelector:@selector(checkForNoMessages) withObject:nil afterDelay:1.0];

但是,這會在調試器中產生一個「wait_fences」通知,而且我不希望將此通知提交給Apple。

哪裏是把彈出警報,使得它出現在適當的位置:

1)在應用程序啓動

2)當應用程序是走出來的背景?

我是否需要在多個地方使用警報?

+0

嘗試在appdidbecomeactive方法中執行一定的延遲之後執行選擇器(顯示警報的新方法),並檢查wait_fences是否仍在控制檯中彈出? – Shubhank 2012-02-06 15:41:11

+0

@Shubhank我現在正在使用一個輕微的延遲,我收到通知。我應該在原文中提到這一點。 – wayneh 2012-02-06 15:50:46

回答

0

好的 - 問題不在於我調用警報的地方,這是因爲它在一個方法中。一旦我將代碼從一個方法轉移到applicationDidBecomeActive中,一切都很好。

1

我建議在您的AppDelegate或更好的根視圖控制器中顯示該消息的方法。也許有一些論點,所以你可以重用它,但這取決於你。

如果您正在關注MVC體系結構,請問您的模型是否存在現有條目,並在必要時觸發Alert消息。但是,也可以將這種行爲封裝在控制器中。

應用程序:didFinishLaunchingWithOptions:和applicationDidBecomeActive:是您想要將此任務委派給您的控制器的地方。

更多關於iOS的多任務處理:https://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

編輯: 不要忘記,你必須調用從主線程的方法。 首先做所有的啓動東西。

+0

我已經在AppDelegate中使用了一個方法,並稍微調用了它,並且我仍然收到此通知。我將編輯我的帖子以包含此信息。 – wayneh 2012-02-06 15:51:39

+0

對不起,無法重現你得到的錯誤。但我會避免延遲的做法,這會導致不可預知的行爲。 – Dominik 2012-02-06 16:03:00

+0

您是否正在使用iOS 5.x模擬器進行測試?嘗試在顯示警報的委託中創建一個簡單的方法,然後在applicationDidBecomeActive中調用它。 – wayneh 2012-02-06 16:14:19