Ios 如何初始化新屏幕并转到它,同时在后台将其添加到表视图
我试图直接进入一个通常通过点击表格视图单元格进入的屏幕-基本上,用户在Ios 如何初始化新屏幕并转到它,同时在后台将其添加到表视图,ios,swift,xcode,uitableview,Ios,Swift,Xcode,Uitableview,我试图直接进入一个通常通过点击表格视图单元格进入的屏幕-基本上,用户在屏幕a上输入一个页面名称,然后进入表格视图屏幕B,他们输入的名称现在是表格视图中的第一个也是唯一一个单元格。然后他们点击该单元格到达屏幕C 现在,我想将屏幕B从等式中剪切出来-我将把该表嵌入到一个滑出菜单中,这样我就不想显示它,我只想在后台更新该表 这是到目前为止我的代码,全部在设置页面(屏幕A): 这是prepareforsgue,当用户完成应用程序注册并按“完成”时调用: 这是Firebase的观察员,负责在用户输入名称后
屏幕a
上输入一个页面名称,然后进入表格视图屏幕B
,他们输入的名称现在是表格视图中的第一个也是唯一一个单元格。然后他们点击该单元格到达屏幕C
现在,我想将屏幕B
从等式中剪切出来-我将把该表嵌入到一个滑出菜单中,这样我就不想显示它,我只想在后台更新该表
这是到目前为止我的代码,全部在设置页面(屏幕A
):
这是prepareforsgue
,当用户完成应用程序注册并按“完成”时调用:
这是Firebase的观察员,负责在用户输入名称后更新表视图:
private func observeRooms() {
// Observe method to listen for new channels being written to Firebase
let roomVc = RoomsTableViewController()
roomVc.roomRefHandle = roomVc.roomRef.observe(.childAdded, with: { (snapshot) -> Void in
let roomData = snapshot.value as! Dictionary<String, AnyObject>
let id = snapshot.key
if let uid = FIRAuth.auth()?.currentUser?.uid {
if let name = roomData["name"] as! String!, name.characters.count > 0 {
roomVc.rooms.append(Room(id: id, name: name, participants: [uid]))
roomVc.tableView.reloadData()
} else {
print("Error! Could not decode channel data")
}
}
})
}
private func observer ooms(){
//观察方法以侦听写入Firebase的新通道
让roomVc=RoomsTableViewController()
roomVc.roomRefHandle=roomVc.roomRef.observe(.childAdded,带有:{(快照)->Void in
让roomData=snapshot.value为!字典
让id=snapshot.key
如果让uid=FIRAuth.auth()?.currentUser?.uid{
如果让name=roomData[“name”]作为!String!,name.characters.count>0{
附加(文件室(id:id,名称:name,参与者:[uid]))
roomVc.tableView.reloadData()
}否则{
打印(“错误!无法解码通道数据”)
}
}
})
}
这是按下“完成”按钮的IBAction:
@IBAction func setupDoneButtonPressed(_ sender: Any) {
setUserInfo()
observeRooms()
let room = rooms // <-- This is where I need to indicate that I want to go to the first room in the table
self.performSegue(withIdentifier: "initChat", sender: room)
}
@IBAction func setupDoneButtonPressed(uu发送方:任意){
setUserInfo()
observeRooms()
让room=rooms/用于更新表视图:
self.tableView.reloadData()
您需要做的是:在用户输入搜索值并按下按钮后,将执行setupDoneButtonPressed(),之后,您必须将新数据设置为全局变量。设置数据后,您必须重新加载de tableview。我认为这可能会有所帮助,如果您尝试过,请告诉我。要更新表视图,请使用:
self.tableView.reloadData()
您需要做的是:在用户输入搜索值并按下按钮后,setupDoneButtonPressed()将被执行,之后,您必须将新数据设置为全局变量。设置数据时,您必须重新加载de tableview。我认为这可能会有所帮助,如果您尝试过,请告诉我。我确实使用roomVc.tableview.reloadData()在observeRooms
函数中重新加载表视图
。它有效吗?我检查了你的代码,我不确定它的“rooms”变量是否有数据。它没有,它看起来肯定是rooms没有获得数据,尽管我不知道我还能做什么-我有所有通常在RoomsTableViewController中运行的代码,而不是在安装控制器中(当然减去实际的tableview方法)这样我就可以绕过rooms控制器。这是rooms控制器:和setup控制器:。我确实使用roomVc.tableview.reloadData()
在observeRooms
函数中重新加载了表视图。它能工作吗?我查看了您的代码,但我不确定它是否为“rooms”变量有数据。它没有,看起来肯定是rooms没有得到数据,尽管我不知道我还能做什么-我有所有通常在RoomsTableViewController中运行的代码,而不是在安装控制器中(当然减去实际的tableview方法)所以我可以绕过房间控制器。这是房间控制器:和设置控制器:。