Wie Aufruf nur Firebase Referenz, wenn Tab-Leiste Ansicht ausgewählt ist

stimmen
0

Ich bin relativ neu in Xcode / swift so Entschuldigungen im Voraus. Ich habe einen Tab bar Controller mit 4 Registerkarten. Jeder Registerkarte verfügt über eine Navigationssteuerung Ansicht eingebettet innerhalb. Dies funktioniert und ich kann jede der vier Registerkarten auswählen.

Ich habe 2 Zweig auf einer Firebase Datenbank, Beispiel:

Fitness - Studio - gym1 - image_url: someURL

UND

Benutzer - userId - Fitnessraum: gym1

In dem ersten Registerkarte (angezeigt, wenn der Benutzer anmeldet), um die „image_url“ im Zusammenhang mit ihrem „Fitness-Studio“ angezeigt wird. Im 4. Registerkarte kann der Benutzer sein Profil bearbeiten, die ihr „Fitness-Studio“ enthält bearbeiten.

Mein Problem ist, die beiden Optionen, die ich für immer diese Daten von Firebase haben entweder „beobachten“ oder „observeSingleEvent“.

Wenn ich „observeSingleEvent“ verwenden diese Daten von Firebase zu ziehen, es funktioniert nur, wenn sich der Benutzer anmeldet und der Tab-Leiste zunächst angezeigt wird. Wenn der Benutzer ihr Fitness-Studio in dem 4. Registerkarte ändert und zum ersten zurückgeht, wird es noch die erste geladene Bild zeigen.

Wenn ich „beobachten“ verwenden, wird es von der Konsole, die in der vierten Registerkarte in dem Moment der Benutzer ihre Fitness-Studio ändert, werden die Daten von Firebase gezogen, obwohl das zugehörige Register nicht geöffnet ist. Zurück zum ersten Tab geht zeigt die richtige Fitness-Studio jetzt.

Ich würde es vorziehen, dass anstelle von entweder der oben genannten, der Code mit dem View-Controller in den ersten Registerkarte eingebettet zugeordnet ist neu nur ausgeführt, wenn das erste Register geklickt wird. Kann dies geschehen?

class GymViewController: UIViewController {

@IBOutlet weak var gym_imageView: UIImageView!

var gym:String = 
var image_url:String = 

override func viewDidLoad() {
    super.viewDidLoad()
    getActiveGym()
}


func getActiveGym() {

    let userID = Auth.auth().currentUser?.uid
    print(userID: \(userID!))
    var ref: DatabaseReference!

    ref = Database.database().reference()
    print(ref: \(ref!))
    ref.child(users).child(userID!).observeSingleEvent(of: .value, with {(DataSnapshot) in

            let value = DataSnapshot.value as? NSDictionary
            self.gym = value?[gym] as? String ?? 
            self.getUrl()
    })

ODER

    ref.child(users).child(userID!).observe(.value, with: {(DataSnapshot) in

        let value = DataSnapshot.value as? NSDictionary
        self.gym = value?[gym] as? String ?? 
        self.getUrl()
    })

  }strong text
Veröffentlicht am 09/10/2019 um 19:02
quelle vom benutzer
In anderen Sprachen...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more