【发布时间】:2016-11-03 07:45:09
【问题描述】:
这是一个我似乎无法在线找到任何解决方案的问题。
我有以下情节提要:
初始表视图中的行与您可以在其他视图上方看到的视图有一个 push segue。
现在,当我在初始表格视图中按下条形按钮时,它会对新的导航控制器(中间的那个)执行模态搜索,您可以在其中创建对象。
在最右侧的 selectFriends 视图中,当您按下完成时,它会运行以下代码:
self.dismissViewController(true, completion: nil)
然后它让我回到最初的表格视图这是我想要的。
这就是奇怪的地方
如果我从其中的第一个视图中关闭模态导航控制器,它工作正常
但是,当我从 selectFriends 视图中关闭模式导航控制器时,它会返回到初始表格视图,
然后在显示模态视图之前连续运行 goToChat segue 的次数。
它甚至不运行 didSelectRowAtIndexPath 代码。
我的猜测是它与初始导航控制器中视图和 segue 的一些映射或存储有关。
didSelectRowAtIndexPath 的初始表视图有这个:
// finds user item to pass to UserProfileView
print("row selected")
if self.resultSearchController.active {
self.selectedItem = self.filteredItemsList[indexPath.row]
} else {
self.selectedItem = self.itemsList[indexPath.row]
}
self.ref.child("users/\(self.currentUser!.uid)").observeEventType(.Value, withBlock: { (snapshot) -> Void in
self.currentUserItem = UserItem(snapshot: snapshot)
self.performSegueWithIdentifier("goToChat", sender: nil)
})
}
如果您有解决方案,请告诉我。
最好的祝愿, 哈立德
【问题讨论】:
-
看来问题出在您的
observeEventType方法上。那是什么?我从来没有见过这样的东西。 -
这是一个每次更改数据库时都会触发的 Firebase 数据调用......因此,当创建对象时,无论选择如何,它都会运行。你是绝对正确的!感谢您引起我的注意。
-
对,所以我的猜测是,通过调用
observeEventType,你已经“注册”了观察者,所以现在它再次触发,因为它仍在观察......这就是为什么代码没有需要再次运行; “块”已被保留,因此它现在自行运行。 -
它就是这样做的。谢谢!
-
您应该将 firebase 标签添加到您的问题中,并且您应该回答自己的问题!完全合法(实际上是鼓励)。可能会帮助其他人。
标签: ios iphone swift firebase firebase-realtime-database