2016-01-21 55 views
0

就像薩拉在這個環節上說: https://forums.developer.apple.com/thread/26922 我使用方法「becomeCurrentPage」當我打電話「presentControllerWithNames()」和網頁更加有同樣的問題而不是5. 我有一個WatchKit應用程序,初始控制器使用presentControllerWithNames()創建一個15頁的界面。 所有這些都是相同的子分類的WKInterfaceController。 根據傳遞的上下文數據,前15個頁面中的一個將在awakeWithContext()期間調用becomeCurrentPage(),使其成爲活動頁面。 只要它是早期頁面之一,但對於後面的頁面,該功能仍可正常工作,顯示屏顯示爲空白。 如果我向後滑動頁面,則只有輕微暫停後纔會顯示第4頁。在向前或向後滑動之後顯示預期的顯示。 使用調試器,我可以看到界面元素已經全部被初始化並且可以通過編程方式訪問。他們沒有設置隱藏,但他們不出現。接口未畫出

編寫一個非常簡單的測試應用程序,我發現問題不是總頁數,而是調用becomeCurrentPage()的頁面的索引。 而這在模擬器和手錶之間或從測試到測試之間並不一致。

在我的測試應用程序中,在模擬器上運行時,如果有任何頁面達到幷包含18,則30頁的應用程序將始終工作。 激活頁面19有時會起作用。 激活頁面20將無法工作。

與我的實際手錶,數字更低,更可變: 激活頁面5將始終工作。 激活頁面6-10有時會起作用。 激活第16頁或更多將無法工作。

我試着在後面的方法中設置頁面:「didAppear」,如果我想要10或20頁,它沒有幫助。

我發現唯一的解決方法是在頁面之間進行一系列的跳轉,每個頁面之間都有一段延遲。 我發現向前跳3頁延遲0.3秒一直工作,但它使界面看起來很糟糕,因爲它需要一秒多的時間才能到達目的頁面,屏幕隨着屏幕閃爍閃爍。

這是一個已知的錯誤與becomeCurrentPage()? 有誰知道如何處理這個問題?

回答

0

從主線程調用becomeCurrentPage()爲我工作。

Apple Documentation提及調用becomeCurrentPage()總是從主線程。

dispatch_async(dispatch_get_main_queue(),{ 
    controller.becomeCurrentPage() 
})