2016-08-20 3 views
0

私はこの機能を持つビューコントローラを持っています:updateProgressComplete。しかし、私は、この関数がであるビューコントローラに値を追加することはできません他のコントローラからの関数への値の追加

私のビューコントローラを:私はこれが原因updateProgressCompleteで動作していないと思う

import UIKit 

class StepsDetailViewController: UIViewController { 

    var pageIndex: Int! = 0 
    var titleText: String! 
    var stepData: String! 
    var pageControl: PageControl? 
    let screenSize: CGRect = UIScreen.mainScreen().bounds 

    @IBOutlet weak var dateLabel: UILabel! 
    @IBOutlet weak var stepsLabel: UILabel! 

    var g : ShapeView? 

    override func viewDidLoad(){ 
     super.viewDidLoad() 

     self.dateLabel.text = self.titleText 
     self.stepsLabel.text = self.stepData 

     g = ShapeView(origin: CGPoint(x: UIScreen.mainScreen().bounds.width/2, y: UIScreen.mainScreen().bounds.height/2)) 

     self.view.addSubview(g!) 
    } 

    func updateProgressComplete(newValue : CGFloat, view: StepsDetailViewController) { 
     self.dateLabel.text = "hello" <-- this doesn't work 
    } 
} 

は、別のクラスから来ている:

インポートUIKit

class PageControl: BasePageViewController, UIPageViewControllerDataSource { 

    var pageViewController: UIPageViewController! 
    var pageTitles: [[String]]! 
    var complete : CGFloat = 0.0; 
    var count = 0 

    override func viewDidLoad(){ 
     super.viewDidLoad() 

     HealthKit().recentSteps() { steps, error in 
      self.pageTitles = steps; 

      self.count = self.pageTitles.count 
      self.count -= 1 

      self.pageViewController = self 
      self.pageViewController.dataSource = self 

      let startVC = self.viewControllerAtIndex(self.count) as StepsDetailViewController 
      let viewControllers = NSArray(object: startVC) 
print(viewControllers) 
      dispatch_async(dispatch_get_main_queue(), { 

       self.pageViewController.setViewControllers(viewControllers as? [UIViewController], direction: .Forward, animated: true, completion: nil) 


      }) 

     } 

    } 



    override func percentCompleteDidChange() { 
     if let percentComplete = self.percentComplete { 
      complete = percentComplete 

      let vc: StepsDetailViewController = self.storyboard?.instantiateViewControllerWithIdentifier("StepsDetailViewController") as! StepsDetailViewController 

      vc.updateProgressComplete(percentComplete, view: vc) 
     } 
    } 

    func viewControllerAtIndex(index: Int) -> StepsDetailViewController 
    { 
     if ((self.pageTitles.count == 0) || (index >= self.pageTitles.count)) { 
      return StepsDetailViewController() 
     } 

     let vc: StepsDetailViewController = self.storyboard?.instantiateViewControllerWithIdentifier("StepsDetailViewController") as! StepsDetailViewController 

      vc.titleText = self.pageTitles[index][0] 
      vc.stepData = self.pageTitles[index][1] 
      vc.pageIndex = index 

      return vc 
    } 


    // MARK: - Page View Controller Data Source 
    func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? 
    { 

     let vc = viewController as! StepsDetailViewController 
     var index = vc.pageIndex as Int 


     if (index == 0 || index == NSNotFound) 
     { 
      return nil 

     } 

     index -= 1 


     return self.viewControllerAtIndex(index) 
    } 

    func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { 

     let vc = viewController as! StepsDetailViewController 
     var index = vc.pageIndex as Int 

     if (index == NSNotFound){ 
      return nil 
     } 

     index += 1 

     if (index == self.pageTitles.count) 
     { 
      return nil 
     } 

     return self.viewControllerAtIndex(index) 

    } 
} 

どうすればこの問題を解決できますか?私はそれが私がこれを使用する何かを持っていると思う:instantiateViewControllerWithIdentifier? updateProgressCompleteの値は常に変更されるため、その関数を使用し、変数として渡さないようにします。

答えて

0

あなたが正しく、は問題です。 Ifは新しいオブジェクトを作成します。 ( 'new'は更新するものとは異なります)。ただし、PageControlを作成する場合は、デリゲートを定義し、StepsDetailViewControllerをデリゲートとして設定して、正しいオブジェクトを更新するようにしてください。

関連する問題