2011-05-20 29 views
0

在我的應用程序中當我添加一個新城市時,我想要在天氣應用程序中擁有一個搜索欄。 我也想搜索谷歌地理編碼的城市/地方,並解析結果我已經knkow如何做到這一點完美的作品。 實際上我有兩個問題。如何在天氣應用程序中創建一個搜索欄?

首先,我該如何創建一個看起來像天氣應用程序或斯托克斯應用程序中的搜索欄?一個正常的搜索欄沒有我可以使用的主題。他們是怎麼做到的 ?

第二我怎麼能成爲即時/實時搜索的感覺? 我的意思是,當你開始輸入時,它會開始搜索你輸入的內容,類似於你輸入的每一個字母,它會在你停止輸入的時候做一個新的搜索並在一段時間後顯示數據。 我無法查詢每一個輸入的字母,這會造成太多的流量,我會猜測時間太長。

回答

1

創建基於窗口的項目,放下視圖,放置UISearchBar,將視圖放在搜索欄的頂部,使其成爲矩形,並且您有一個包含主題的搜索欄。然後,您必須實施UISearchBarDelegate協議,以便每次編輯時,您都可以在以前預先加載的字典中(或直接從Internet上)查找城市名稱,並在存在任何匹配項時執行表格插入。您可以嘗試匹配確切的名稱,或使用距離。

也許你只想要一個延遲後現場結果,這樣做

[NSObject cancelPreviousPerformRequestsWithTarget:self]; 
[self performSelector:@selector(fillMyTableWithResults) withObject:nil afterDelay:1.0]; 

在委託的textDidChange方法。

+0

猜你的意思是在搜索欄右上方的標籤?我猜想我必須這樣做,因爲IB不讓我在搜索欄上放置一個標籤。 sry我對iphone開發有點新鮮感!我一定要通過谷歌地理編碼加載數據,所以我的問題是我想我不能做每個字母改變查詢? – bllubbor 2011-05-20 08:19:00

+0

如果你添加一個UIView,UISearchBar作爲一個子元素(在它下面移動它直到它變成一個子節點),並且該標籤作爲UIView的一個子元素,它可以讓你在沒有任何編程的情況下添加UILabel或者UIImageView。換句話說,即使看起來這樣,標籤也不是小孩或小節的一部分。通過我在上面發佈的代碼,您可以選擇延遲,1.0或其他任何內容,以便只在用戶停止書寫時才進行搜索。 – Jano 2011-05-20 08:31:08

+0

謝謝你這個作品 – bllubbor 2011-05-20 13:31:25

0

你看過 UISearchDisplayController。看看這個 example

編輯 緩存以前的結果是什麼,你可以考慮,但沒有發送請求,你可以最終顯示過期數據。雖然我沒有真正嘗試過,但我認爲Three20框架是以web作爲數據源的想法構建的。它也有一個相當於TTSearchDisplayController。你可以看看它是否有幫助。

+0

是的,我確實謝謝你。這個例子幫助我實現了我的搜索欄,但並沒有真正幫助我解決我的兩個問題:( – bllubbor 2011-05-20 08:22:12

+0

編輯我的答案,因爲我以前的答案是不相關的,雖然不完全在那裏,但我希望它能幫助你走向正確的方向。 – 2011-05-20 08:38:28

相關問題