我使用的是UIPageViewController(控股兩家UIViewControllers和一個UITableViewController)您瀏覽我的應用程序。我已經添加了按鈕,使用在許多堆棧溢出問題中建議的setViewControllers
方法從一個頁面移動到另一個頁面。但是,如果我開始上視圖控制器B,滑動,以查看控制器A,然後使用建議setViewControllers方法返回視圖控制器B,它不是簡單地返回到頁面,它加載視圖控制器B.本的新實例是一個問題,因爲我在視圖控制器B中顯示從互聯網檢索到的數據,所以每次檢索這個havig都非常不方便。 現在我知道這是可能的,因爲snapchat,tinder和fling都這樣做。除非他們只是存儲要顯示和加載每次基於在評論你的闡述變化UIPageViewController頁面編程無需重新加載
回答
,你已經注意到了頁面視圖控制器的滾動風格確實發生緩存相鄰視圖控制器的數據。但是這是一個實現細節,你不應該依賴它。這聽起來像你不適當地使用頁面視圖控制器,尤其是因爲你只有三個「頁面」。我會建議其中之一:
一個標籤欄控制器。同樣,這具有所有標籤欄控制器的孩子保持活着的優點。
滾動視圖,形成自己的自定義父視圖控制器的基礎。您可以將所有三個「頁面」並排放在一起,然後滾動。這有更大的優勢,滾動只是工作(雖然你也可以使它爲標籤欄控制器工作),並且你是在全面收費,所以再次讓孩子們都活着。
謝謝你堅持與我馬特!這聽起來像你的第二個建議可能是我以後,我非常希望保持從頁面視圖控制器的刷卡導航。 – TimWhiting
您可以使用標籤欄控制器進行滑動導航。但我不確定它比簡單的水平分頁滾動視圖有什麼優勢。 – matt
這對我來說肯定會更容易實現,我該如何促進標籤欄控制器中的滾動? – TimWhiting
感謝馬特的意見和答案,我現在知道,一個UIPageViewController不堅持兒童視圖控制器在內存中,所以我用一個UIScrollView代替。無論如何,它比UIPageViewController實現起來要容易得多。下面的代碼設置我需要的東西
override func viewDidLoad() {
super.viewDidLoad()
var scrollView = UIScrollView(frame: CGRectMake(0, 0, self.view.bounds.width, self.view.bounds.height))
scrollView.contentSize = CGSizeMake(self.view.bounds.width*3, self.view.bounds.height)
scrollView.pagingEnabled=true
self.view.addSubview(scrollView)
var scrollView2 = UIScrollView(frame: CGRectMake(self.view.bounds.width, 0, self.view.bounds.width, self.view.bounds.height))
scrollView2.backgroundColor=UIColor.redColor()
scrollView2.contentSize=CGSizeMake(self.view.bounds.width, 2*self.view.bounds.height)
scrollView2.pagingEnabled=true
scrollView2.bounces=false
scrollView2.showsHorizontalScrollIndicator=false
scrollView2.showsVerticalScrollIndicator=false
scrollView.addSubview(scrollView2)
var view1 = UIView(frame: CGRectMake(0, 0, self.view.bounds.width, self.view.bounds.height))
view1.backgroundColor=UIColor.blueColor()
scrollView.addSubview(view1)
//Add View controller 1 to view1
var view2 = UIView(frame: CGRectMake(0, 0, self.view.bounds.width, self.view.bounds.height))
view2.backgroundColor=UIColor.greenColor()
scrollView2.addSubview(view2)
//Add view controller 2 to view2
var view3 = UIView(frame: CGRectMake(0, self.view.bounds.height, self.view.bounds.width, self.view.bounds.height))
view3.backgroundColor=UIColor.yellowColor()
scrollView2.addSubview(view3)
//Add view controller 3 to view3
var view4 = UIView(frame: CGRectMake(2*view.bounds.width, 0, self.view.bounds.width, self.view.bounds.height))
view4.backgroundColor=UIColor.orangeColor()
scrollView.addSubview(view4)
//Add view controller 4 to view4
}`
- 1. .submit()無需重新加載頁面
- 2. 清除#無需重新加載頁面
- 3. 無需重新加載頁面重新加載陣列
- 4. 重新加載圖片而無需重新加載頁面?
- 5. 無需重新加載頁面重新加載數據表?
- 6. Jquery/Ajax刷新無需重新加載或加載頁面?
- 7. 如何通過改變$ stateParams無需重新加載頁面
- 8. 提高PHP變量onSroll無需重新加載頁面
- 9. 更改變量onchange select無需重新加載頁面
- 10. 清除頁面數據,無需重新加載頁面?
- 11. UIPageViewController加載錯誤頁面
- 12. 頁面重定向無需重新加載/刷新
- 13. 重新運行jsp頁面中的測試,無需重新加載頁面
- 14. HTML - 更新\更新頁面內容,無需刷新\重新加載頁面
- 15. 重新加載頁面一次,然後重新加載沒有內容變化
- 16. 使用javascript重新加載div而無需重新加載頁面
- 17. 的onsubmit需要重新加載頁面
- 18. 重置表單元素無需重新加載頁面
- 19. 無需重新加載頁面的ASP.NET網站的新內容
- 20. jQuery dataTable 1.7.6刷新表格無需重新加載頁面
- 21. 更新Postgres數據庫,無需重新加載頁面
- 22. 刷新Mysql計數,無需重新加載頁面
- 23. 如何刷新頁面而無需在PHP中重新加載?
- 24. 更新DOM,無需在Django中重新加載頁面
- 25. Spring MVC - 無需重新加載打開新頁面
- 26. 刷新動態選擇框,無需重新加載頁面
- 27. 顯示內容Onclick無需重新加載/刷新頁面
- 28. 自動刷新顯示錶無需重新加載頁面
- 29. 更新頁面和網址,無需重新加載
- 30. 更新div無需重新加載頁面
「我正在使用UIPageViewController(持有兩個UIViewControllers和一個UITableViewController)」不可能。 UIPageViewController一次只有一個視圖控制器。 – matt
「除非他們只存儲要顯示的數據並每次加載」。當然。模型 - 視圖 - 控制器!不要將持久性數據存儲在視圖控制器中。視圖控制器告訴視圖如何顯示模型數據。將數據存儲在模型中,並以不依賴視圖控制器的方式存儲 - 因爲正如您發現的那樣,它們不一定會持續存在。 – matt
感謝馬特,請原諒我的無知,但我們是否在討論核心數據中的數據模型?讓我感到驚訝的是,如果你繼續使用tinder並向下滾動一個表格,然後轉到另一個視圖然後返回,它將以與你離開時相同的偏移量返回。那麼他們甚至會存儲這樣的東西? – TimWhiting