我已经在ViewController的viewWillAppear中编写了以下侦听器;并且无法弄清楚如何删除它。 虽然我知道firebase中的.remove()属性,但我仍然不知道如何在此处完全实现它。我真的很感谢您的帮助。
我还有一个重要的问题:我在下面介绍的VC是水平页面类型滚动视图的一部分。这样,嵌套此VC()和另外2个VC的分页视图容器始终在屏幕上。在viewWillDisappear()方法中分离侦听器是否仍能按预期工作?
TABLES sscrfields.
PARAMETERS country TYPE land1 AS LISTBOX VISIBLE LENGTH 20 USER-COMMAND country_changed.
PARAMETERS carrid TYPE s_carr_id AS LISTBOX VISIBLE LENGTH 20.
AT SELECTION-SCREEN OUTPUT.
DATA(lt_value) = VALUE vrm_values(
( key = 'FR' text = 'France' )
( key = 'DE' text = 'Allemagne' ) ).
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'COUNTRY'
values = lt_value
EXCEPTIONS
id_illegal_name = 1
OTHERS = 2.
lt_value = switch #( COUNTRY
when '' then VALUE #( )
when 'FR' then VALUE #(
( key = 'AF' text = 'Air France' )
( key = 'TO' text = 'Transavia' ) )
when 'DE' then value #(
( key = 'EW' text = 'Eurowings' )
( key = 'LH' text = 'Lufthansa' ) ) ).
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'CARRID'
values = lt_value
EXCEPTIONS
id_illegal_name = 1
OTHERS = 2.
AT SELECTION-SCREEN.
IF sscrfields-ucomm = 'COUNTRY_CHANGED'.
carrid = ''.
ENDIF.
答案 0 :(得分:1)
在任何受支持的平台上派遣Firestore观察器都可以使用相同的方法:当您附加侦听器时,您将获得一个函数。调用该函数以取消注册观察者。
From the documentation on [detaching a listener](https://firebase.google.com/docs/firestore/query-data/listen#detach_a_listener): let listener = db.collection("cities").addSnapshotListener { querySnapshot, error in // ... } // ... // Stop listening to changes listener.remove()