與Xcode/Swift
比較新,但在其他語言中有一些經驗。UIPageView中的更新標籤
我在應用的嬰兒期階段,並正在努力實現以下功能:
在UIPageView
環境中,當用戶掃描前,(其值是一個整數)標籤增加1。當用戶向後滑動時,標籤減1。
我有一個單一的UIViewController
作爲內容頁與故事板ID PageContentViewController
。
從本質上講,我的想法是申報初始設置爲0的整型變量,然後創建一個swipedBack()
和swipedRight()
功能,更新變量的值,然後設置標籤上PageContentViewController
文本該變量的值。該功能然後返回新的PageContentViewController
。
我收到了一些奇怪的行爲。也就是說,該應用程序正在建設並運行良好。
初始屏幕加載的標籤爲0.然後我向前滑動,它會更新爲1.但是然後...如果我再次向前滑動,則標籤保持爲一個。但是,那麼......如果我繼續前進,那麼它就會按照期望行事 - 先是2,然後是3.然後,如果我反轉方向,它就會變得更加奇特。
如果我的數值是4,然後向後滑動,它會減少到3.但隨後再次滑回它將返回到4,然後繼續滑動,它將按預期行爲(4,3, 2,1 ......)。我顯然有一個概念誤解,並希望得到一些幫助。
這裏是我的代碼:
import UIKit
class ViewController: UIPageViewController, UIPageViewControllerDataSource {
var arrPageTitle: NSArray = NSArray()
var t: Int = 0
override func viewDidLoad() {
super.viewDidLoad()
self.dataSource = self
self.setViewControllers([getViewControllerAtIndex()] as [UIViewController], direction: UIPageViewControllerNavigationDirection.forward, animated: false, completion: nil)
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
return swipedBack()
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
return swipedForward()
}
func getViewControllerAtIndex() -> PageContentViewController {
let pageContentViewController = self.storyboard?.instantiateViewController(withIdentifier: "PageContentViewController") as! PageContentViewController
pageContentViewController.strTitle = "\(t)"
return pageContentViewController
}
func swipedForward() -> PageContentViewController {
let pageContentViewController = self.storyboard?.instantiateViewController(withIdentifier: "PageContentViewController") as! PageContentViewController
t = t + 1
pageContentViewController.strTitle = "\(t)"
return pageContentViewController
}
func swipedBack() -> PageContentViewController {
let pageContentViewController = self.storyboard?.instantiateViewController(withIdentifier: "PageContentViewController") as! PageContentViewController
t = t - 1
pageContentViewController.strTitle = "\(t)"
return pageContentViewController
}
}
謝謝。我曾嘗試實現基本的UISwipeGestureRecognizers,並嘗試在發生這些滑動時調用swipeBack和swipeForward函數。但是當我在模擬器中滑動時,標籤沒有更新。 '@IBAction FUNC swipeBack(_發件人:UISwipeGestureRecognizer){ T = T-1 lblTitle.text = 「刷回」 } @IBAction FUNC swipeForward(_發件人:UISwipeGestureRecognizer){ T = T + 1 lblTitle.text =「向前滑動」 }' 這是在PageContentViewer.Swift文件中調用 –
它們爲什麼是IBActions?這可能是問題的一部分。讓他們正常的功能。 –
我在故事板上創建了它們?將手勢識別器對象拖動到contentPageViewer視圖控制器上?他們自動生成的語法... –