2017-03-19 3 views
0

ビューコントロールをビューコントロールから別のビューコントロールに継承するブール値ステートメントを渡そうとしていますが、uviewcontrollerから無関係な型へのキャストは常に失敗します。 。行中しかしSwift 3 - Segue/uiviewcontrollerから無関係の型へのキャストは常に失敗します

mainVC

public func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?{ 
     guard let viewControllerIndex = theViewControllers.index(of: viewController) else { 
      return nil 
     } 
     let nextIndex = viewControllerIndex + 1 

     if(viewControllerIndex == 0){ 
      let sessionTimerActive: Bool = false 
      performSegue(withIdentifier: "sessionActiveBool", sender: sessionTimerActive) 

     } 

secondVC

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if let sessionTrackerBoolClone = segue.destination as? Bool{ 
    sesssionTrackerActive = sessionTrackerBoolClone 
    } 
} 

if let sessionTrackerBoolClone = segue.destination as? Bool{ 

私はエラーを取得しています。

答えて

1

宛先がUIViewControllerであるため、Booleanの値がsegue.destinationでないようにするには、キャストsenderと入力する必要があります。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if let sessionTrackerBoolClone = sender as? Bool{ 
     sesssionTrackerActive = sessionTrackerBoolClone 
    } 
} 

あなたがあなたの次のコントローラにこのブール値を渡すキャストあなたのViewControllerdestinationを入力し、そのプロパティを設定します。あなたのコードsegue.destination

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let vc = segue.destination as! ViewController //Your ViewController class 
    if let sessionTrackerBoolClone = sender as? Bool{ 
     vc.sesssionTrackerActive = sessionTrackerBoolClone 
    } 
} 
+0

それはあなたのために働くのですか? –

0

UIViewControllerになるだろう。では、なぜそれをBoolにキャストしていますか?それはあなたにエラーを与えるキャストです。あなたは間違った価値観を見ているかもしれません。それを修正し、あなたはすばらしいはずです:)

関連する問題