すべての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に切り替えることができます(私は大変助けてくれてありがとう)。