メイン、ライダー、ドライバーの3つのストーリーボードを持つ1つのデバイスのアプリ。
ドライバーストーリーボードでは、ドライバーがライドを受け入れると、DriverVC.swiftが「acceptedRyde = true」をライダーストーリーボードに渡す必要があります.RiderVCを使用すると、ライダーストーリーボードにアラートが表示されます。スウィフトを使用したストーリーボード間のデータの受け渡し
どうすればいいですか?
メイン、ライダー、ドライバーの3つのストーリーボードを持つ1つのデバイスのアプリ。
ドライバーストーリーボードでは、ドライバーがライドを受け入れると、DriverVC.swiftが「acceptedRyde = true」をライダーストーリーボードに渡す必要があります.RiderVCを使用すると、ライダーストーリーボードにアラートが表示されます。スウィフトを使用したストーリーボード間のデータの受け渡し
どうすればいいですか?
@LizG - これはFirebaseのようなもので実装するのはかなり簡単です。
多くのFirebaseアプリケーションでは、現在のユーザーIDを初期キーとして格納されているデータが表示されますが、ここで行うと他の誰もデータにアクセスできなくなります。あなたはこのような乗り物のリストを持っている可能性が
、その後、あなたはこの
のようなものとの変化を見てそれらを持って、ドライバーには何もプッシュする必要はありません。let ref = FIRDatabase.database().reference(withPath: "Rides")
ref.queryOrdered(byChild: "status").queryEqual(toValue: "requested").observe(FIRDataEventType.value, with: { (snapshot) in
let rides = snapshot.value as? [String : AnyObject] ?? [:]
for ride in rides
{
print(ride)
// update the list of available rides
}
})
乗車を受け入れるときには、2人のドライバーが同時にそれをやろうとしないように注意する必要があります。あなたが管理しているかどうかを確認してください
Firebaseの例は豊富で、必要なものをすべて表示してください。
let rider = UIStoryboard(name: "Driver", bundle: nil).instantiateViewController(withIdentifier: "RirderVC") as! RiderVC
rider.acceptedRyde = true
self.present(rider, animated: true, completion: nil)
RiderVCをRiderVCのストーリーボード識別子として設定する必要があります。
私はあなたのRiderVCにacceptRyde変数があるとします。
var acceptRyde: Bool?
あなただけのあなたがprepare(for:sender:)
を使用することができ、あなたのviewDidLoadで
let alertController = UIAlertController(title: "Ride Accepted", message: "your message", preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))
self.present(alertController, animated: true, completion: nil)
このコードはどこに行きますか?ドライバーで? viewDidLoadでは?私はこれをやってみたが、私のアプリはドライバからライダーにジャンプすることができない。これは、あなたが運転手かライダーのどちらかであるウーバーアプリのようなものです。 – LizG
オハイオ州オクラホマ、@ Polesの提案のような地元の情報を使用してください。ビューがドライバからライダーにジャンプできない場合、なぜriderVCでコードを実行するのですか?それは到達不可能でなければなりません –
あなたのアプリケーションモジュールを分離した状態に保つ方法を見つけなければなりません。 –
をコードを追加し、アラートを表示したい場合。 documentation here
基本的に、新しいView Controllerにセグをするときは、現在持っている値を読み込み、それを現在のView Controllerに渡します。これは、アラートをトリガするように指示するために使用できます。 (私の頭の上から)
例
class ViewControllerOne: UIViewController {
var acceptedRide: Bool = false
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "YOUR_SEGUE_IDENTIFIER" {
if let destinationViewController = segue.destination as? ViewControllerTwo {
destinationViewController.showAlert = acceptedRide
}
}
}
}
class ViewControllerTwo: UIViewController {
var showAlert: Bool = false {
didSet {
if showAlert {
// SHOW ALERT
}
}
}
}
注:アラートを表示するdidSet
を使用したくない場合があります。アラートを表示する正しい時刻を決定する必要があります。
ローカル通知を使用する必要があります。 – Poles
単に意見を述べるのではなく、理由を説明してください。 – Russell