QML 5.10 StackView 界面管理之 ------ 重復壓入問題


在使用 QML 做手機APP開發的過程中,發現 StackView 常常會因為手機點擊過快而將同一個界面壓入了兩次的情況,通過 depth 來解決問題通常由於界面壓入的復雜性,一個界面可能會因為不同的操作而處於不同的 depth ,從而導致界面判斷 depth 過於復雜和繁冗,如此,StackView 提供了 find() 方法,可以查找到對應的界面,函數原型如下:


Item find(callback, behavior)

Search for a specific item inside the stack. The callback function is called for each item in the stack (with the item and index as arguments) until the callback function returns true. The return value is the item found. For example:

stackView.find(function(item, index) {
        return item.isTheOne
})

該函數沒有函數名,該函數會從棧頂一直查找到棧低,如果沒有找到的話,如果中途找到了,會結束該函數在接下來的界面中運行。該 function 如果返回 true ,就代表找到了對應的界面,find() 函數就會返回這個界面元素,可以通過 var 變量接收這個界面元素,並通過該變量訪問這個界面內定義的數據。

在界面管理的應用中,我們通過在每一個界面上定義一個唯一的 pageId ,通過查找確認 StackView 中是否存在該 Id ,判斷該界面是否已經被壓入,這樣就可以避免重復壓入的問題。

(去除掉 find() 函數出問題的情況,該方法在一定情況下優於直接比較 depth)

 

遇到了,記一下,希望有用~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM