我正在處理幾個大型RSS源並在TableView中顯示結果。處理在用戶點擊相關標籤後開始。一切正常,但由於處理需要幾秒鐘,NIB和表格不會加載,直到處理結束,並且看起來iPhone已經被佔用。我已經向NIB添加了一個活動指示器,但是因爲在表格準備好顯示之前它不會加載,所以看起來太遲而無法使用。大型表格加載時發出消息用戶
有沒有人有任何想法如何在表建立/加載時向用戶顯示消息?我曾嘗試加載一個UIView第一次,並添加表作爲子視圖,但再次,似乎只有在表準備好後加載。
引導讚賞。
我正在處理幾個大型RSS源並在TableView中顯示結果。處理在用戶點擊相關標籤後開始。一切正常,但由於處理需要幾秒鐘,NIB和表格不會加載,直到處理結束,並且看起來iPhone已經被佔用。我已經向NIB添加了一個活動指示器,但是因爲在表格準備好顯示之前它不會加載,所以看起來太遲而無法使用。大型表格加載時發出消息用戶
有沒有人有任何想法如何在表建立/加載時向用戶顯示消息?我曾嘗試加載一個UIView第一次,並添加表作爲子視圖,但再次,似乎只有在表準備好後加載。
引導讚賞。
從描述中很難猜出發生了什麼,但看起來你的呼叫不是異步的。以下是您應該在代碼中執行的操作:
使所有調用異步。你說你的手機正在抓緊。聽起來像你的請求和響應正在主線程上發生。有許多庫可以用來處理異步調用。例如ASIHTTPRequest ....
在顯示tableView之前不要等待數據進入。這是一個設計原則,您可以儘可能多地加載用戶界面,以便用戶在後臺加載數據時可以查看某些內容。你應該做的是初始化一個NSMutableArray來保存數據。最初這個數組將不包含任何對象。這是您在數據源方法中使用的數組:使用數組大小numberOfRowsInSection
並使用cellForRowAtIndexPath
中的數組對象。一旦您的RSS提要XML進入並被解析,請將其存儲在您的陣列中並致電[tableView reloadData]
。這樣你就不會讓你的用戶看到一個空白的屏幕。 (另一個好的做法是當數組大小爲零時,在你的tableview中顯示一個表示「數據正在加載」的單元或其他東西)。
當你第一次初始化並加載你的表格,然後關閉這些RSS提要請求時,這就是你在tableView上顯示活動指示器視圖的地方。當RSS數據進入並且您的tableView重新加載時停止動畫指示器。
這些是在tableview中顯示非本地數據時應遵循的標準步驟。提供流暢的用戶體驗。
就像我之前說的,從你的問題看來,你的電話並不是異步的。如果我錯了,糾正我,讓我們從那裏...
謝謝西德。這真的很有幫助。我會再看一次。 – Jeremy 2011-05-20 17:05:07