2017-02-01 10 views
0

すべてのView Controllerは、タブバーコントローラを使用してリンクされています。私の唯一の問題は、ポップオーバーが表示され、適切な状況のために別のView Controllerにユーザーを送信できない場合です。popoverのunwind segueを通じてtabbarcontrollerを使用して表示にナビゲートする方法

//user selects a row this function triggers an event 
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    if tableView == self.tableviewlineneeds 
    { 
     forklift.paramneeds = "\(forklift.k)&f=\(forklift.forkliftid)&id=\(forklift.needuniqueid[(indexPath as NSIndexPath).row])&o=" 
     let popneeds = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "verifyneedsaction") as! NeedsActionPopover 
     popneeds.modalPresentationStyle = UIModalPresentationStyle.popover 
     popneeds.popoverPresentationController!.delegate = self 
     popneeds.popoverPresentationController?.permittedArrowDirections = .any 
     popneeds.popoverPresentationController?.sourceView = tableviewlineneeds 
     popneeds.popoverPresentationController?.sourceRect = tableviewlineneeds.rectForRow(at: indexPath) 
     popneeds.preferredContentSize = CGSize(width: 225, height: 180) 
     popneeds.needitem = forklift.itemneeds[(indexPath as NSIndexPath).row] 
     self.present(popneeds, animated: true, completion: nil) 
    } 
    if tableView == self.tableviewlinepickup 
    { 
     forklift.parampickup = "\(forklift.k)&f=\(forklift.forkliftid)&id=\(forklift.pickupuniqueid[(indexPath as NSIndexPath).row])&o=" 
     let poppickup = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "verifypickupaction") as! PickupActionPopover 
     poppickup.modalPresentationStyle = UIModalPresentationStyle.popover 
     poppickup.popoverPresentationController!.delegate = self 
     poppickup.popoverPresentationController?.permittedArrowDirections = .any 
     poppickup.popoverPresentationController?.sourceView = tableviewlinepickup 
     poppickup.popoverPresentationController?.sourceRect = tableviewlinepickup.rectForRow(at: indexPath) 
     poppickup.preferredContentSize = CGSize(width: 300, height: 180) 
     forklift.pickuplocation = forklift.locationpickup[(indexPath as NSIndexPath).row] 
     poppickup.pickupitem = forklift.itempickup[(indexPath as NSIndexPath).row] 
     self.present(poppickup, animated: true, completion: nil) 
    } 
} 

ピックアップ用ポップアップがトリガされる場合である:私はここ

tabBarController.selectedIndex = 1

を使用するいくつかの関連するコードである試みました。そして、ここでアンワインドセグエです:

@IBAction func unwindLinePickup(_ segue: UIStoryboardSegue) 
{ 
    if segue.identifier == "confirm" 
    { 
     switch forklift.pickuplocation 
     { 
     case "Line 2": 
      self.sendToMoveView() 
     case "Line 3": 
      self.sendToMoveView() 
     case "Line 7": 
      self.sendToMoveView() 
     case "Line 8": 
      self.sendToMoveView() 
     default: 
      API.HTTPCall(forklift.parampickup, url: forklift.postmove!, method: "POST", int: 10) 
     } 
    } 
} 

、これはスキャナ・ビュー・コントローラに送信するために私の関数である:私は私のviewDidAppearオーバーライドし、それのような場所でtabBarController.selectedIndexを使用してみましたが

func sendToMoveView() 
{ 
    guard let tabBarController = tabBarController else { return } 
    tabBarController.selectedIndex = 1 
} 

既定のビューまたはレイアウトのサブビューを設定するためのもので、AppDelegateで使用する前に既定のビューを設定しています。 VCにナビゲートすると他の方法でVCに切り替えることができます(私は大変助けてくれてありがとう)。

答えて

0

私は手がかりを見つけました。この問題の答え:Change UITabbar selectedItem in Swift

私は、最初のビューコントローラからの私のアンワインドセグエを取り出して、タブバーコントローラにそれを埋め込み、次のように見えるために私sendToMoveView機能を変更:

func sendToMoveView() 
{ 
    self.selectedViewController = self.viewControllers?[1] 
} 

私もやり直しストーリーボードでの私の巻き戻しの接続が、正しいコントローラを表示していても安全であるようにするだけです。 oあなたが適切なストーリーボードIDをタブバーコントローラに与えなかった場合、私が行った変更はうまくいかないことを指摘する。これは私に頭痛を与えた。

関連する問題